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/08/08 19:50:33 UTC

tinkerpop git commit: TranslationStrategy is no longer needed as everything is Bytecode based. However, its useful for testing and thus is now in gremlin-test/. This allows us to remote TraversalSource.withTranslator(). Updated all the respective Provide

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1278 daa37695e -> f7e2945a8


TranslationStrategy is no longer needed as everything is Bytecode based. However, its useful for testing and thus is now in gremlin-test/. This allows us to remote TraversalSource.withTranslator(). Updated all the respective Providers that use translation throughout. Removed the concept of CreationStrategy as that was a new Strategy categy introduced in this branch which was needed when translation happened in real-time. The bytecode model doesn't require it. Thus, no need to have it -- reverted.


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

Branch: refs/heads/TINKERPOP-1278
Commit: f7e2945a8124e9de7f65b1e7eaf01fac2c453671
Parents: daa3769
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Aug 8 13:50:06 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Aug 8 13:50:26 2016 -0600

----------------------------------------------------------------------
 .../gremlin/process/remote/RemoteGraph.java     |   2 +-
 .../strategy/decoration/RemoteStrategy.java     |   3 -
 .../gremlin/process/traversal/Bytecode.java     |   4 +-
 .../process/traversal/TraversalSource.java      |  16 +--
 .../process/traversal/TraversalStrategies.java  |   2 +-
 .../process/traversal/TraversalStrategy.java    |  53 ++-------
 .../dsl/graph/GraphTraversalSource.java         |   6 --
 .../strategy/creation/TranslationStrategy.java  |  94 ----------------
 .../process/traversal/util/ScriptTraversal.java |  18 ----
 .../tinkerpop/gremlin/util/CoreImports.java     |   6 +-
 .../gremlin/groovy/GroovyTranslatorTest.java    |   4 +-
 .../gremlin/groovy/jsr223/GroovyTranslator.java |   3 +-
 .../gremlin/python/jsr223/PythonTranslator.java |   3 +-
 .../gremlin_python/process/graph_traversal.py   |   4 -
 .../jsr223/PythonGraphSONJavaTranslator.java    |  12 ++-
 .../gremlin/python/jsr223/PythonProvider.java   |   6 +-
 .../RemoteGraphGroovyTranslatorProvider.java    |   5 +-
 .../gremlin/process/ProcessComputerSuite.java   |   2 +-
 .../gremlin/process/ProcessStandardSuite.java   |   2 +-
 .../TranslationStrategyProcessTest.java         |  67 ------------
 .../decoration/TranslationStrategy.java         | 108 +++++++++++++++++++
 .../TranslationStrategyProcessTest.java         |  67 ++++++++++++
 .../TinkerGraphGroovyTranslatorProvider.java    |   7 +-
 .../TinkerGraphJavaTranslatorProvider.java      |   5 +-
 .../TinkerGraphGraphSONTranslatorProvider.java  |   5 +-
 25 files changed, 227 insertions(+), 277 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
index 9852ed0..2c70266 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
@@ -74,7 +74,7 @@ import java.util.Iterator;
         method = "*",
         reason = "hmmmm")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategyProcessTest",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest",
         method = "*",
         reason = "hmmmm")
 @Graph.OptOut(

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
index 20f7e80..35b3fdd 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
@@ -29,10 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/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 3f9c1cc..9c5ef76 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
@@ -79,11 +79,11 @@ public final class Bytecode implements Cloneable, Serializable {
         return bindingsMap;
     }
 
-    private static void addInstructionBindings(final Map<String, Object> bindingsMap, final Instruction instruction) {
+    private static final 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)
+            else if (argument instanceof Bytecode)
                 bindingsMap.putAll(((Bytecode) argument).getBindings());
         }
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
index 0b9a2d6..bd5c055 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal;
 import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -85,7 +84,6 @@ public interface TraversalSource extends Cloneable {
         public static final String withoutStrategies = "withoutStrategies";
         public static final String withComputer = "withComputer";
         public static final String withSideEffect = "withSideEffect";
-        public static final String withTranslator = "withTranslator";
     }
 
     /////////////////////////////
@@ -118,18 +116,12 @@ public interface TraversalSource extends Cloneable {
     }
 
     /**
-     * Add a {@link Translator} to translate any traversal from this traversal source language into some target language.
+     * Using the provided {@link Bindings} to create {@link org.apache.tinkerpop.gremlin.process.traversal.Bytecode.Binding}.
+     * The bindings serve as a relay for ensure bound arguments are encoded as {@link org.apache.tinkerpop.gremlin.process.traversal.Bytecode.Binding} in {@link Bytecode}.
      *
-     * @param translator the translator that will do the source to targer language translation
-     * @return a new traversal source with updated strategies
+     * @param bindings the bindings instance to use
+     * @return a new traversal source with set bindings
      */
-    public default TraversalSource withTranslator(final Translator translator) {
-        final TraversalSource clone = this.clone();
-        clone.getStrategies().addStrategies(new TranslationStrategy(clone, translator));
-        clone.getBytecode().addSource(Symbols.withTranslator, translator);
-        return clone;
-    }
-
     public default TraversalSource withBindings(final Bindings bindings) {
         final TraversalSource clone = this.clone();
         clone.getBytecode().addSource(Symbols.withBindings, bindings);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
index b3caf6f..4b89833 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
@@ -60,7 +60,7 @@ import java.util.stream.Collectors;
  */
 public interface TraversalStrategies extends Serializable, Cloneable {
 
-    static List<Class<? extends TraversalStrategy>> STRATEGY_CATEGORIES = Collections.unmodifiableList(Arrays.asList(TraversalStrategy.CreationStrategy.class, TraversalStrategy.DecorationStrategy.class, TraversalStrategy.OptimizationStrategy.class, TraversalStrategy.ProviderOptimizationStrategy.class, TraversalStrategy.FinalizationStrategy.class, TraversalStrategy.VerificationStrategy.class));
+    static List<Class<? extends TraversalStrategy>> STRATEGY_CATEGORIES = Collections.unmodifiableList(Arrays.asList(TraversalStrategy.DecorationStrategy.class, TraversalStrategy.OptimizationStrategy.class, TraversalStrategy.ProviderOptimizationStrategy.class, TraversalStrategy.FinalizationStrategy.class, TraversalStrategy.VerificationStrategy.class));
 
     /**
      * Return all the {@link TraversalStrategy} singleton instances associated with this {@link TraversalStrategies}.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategy.java
index e09b03c..f01f418 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategy.java
@@ -29,7 +29,7 @@ import java.util.Set;
 
 /**
  * A {@link TraversalStrategy} defines a particular atomic operation for mutating a {@link Traversal} prior to its evaluation.
- * There are 6 pre-defined "traversal categories": {@link CreationStrategy}, {@link DecorationStrategy}, {@link OptimizationStrategy}, {@link ProviderOptimizationStrategy}, {@link FinalizationStrategy}, and {@link VerificationStrategy}.
+ * There are 6 pre-defined "traversal categories": {@link DecorationStrategy}, {@link OptimizationStrategy}, {@link ProviderOptimizationStrategy}, {@link FinalizationStrategy}, and {@link VerificationStrategy}.
  * Strategies within a category are sorted amongst themselves and then category sorts are applied in the ordered specified previous.
  * That is, decorations are applied, then optimizations, then provider optimizations, then finalizations, and finally, verifications.
  * If a strategy does not fit within the specified categories, then it can simply implement {@link TraversalStrategy} and can have priors/posts that span categories.
@@ -67,7 +67,7 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
     }
 
     /**
-     * The type of traversal strategy -- i.e. {@link CreationStrategy}, {@link DecorationStrategy}, {@link OptimizationStrategy}, {@link FinalizationStrategy}, or {@link VerificationStrategy}.
+     * The type of traversal strategy -- i.e. {@link DecorationStrategy}, {@link OptimizationStrategy}, {@link FinalizationStrategy}, or {@link VerificationStrategy}.
      *
      * @return the traversal strategy category class
      */
@@ -83,35 +83,6 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
     /**
      * Implemented by strategies that adds "application logic" to the traversal (e.g. {@link PartitionStrategy}).
      */
-    public interface CreationStrategy extends TraversalStrategy<CreationStrategy> {
-
-        @Override
-        public default Class<CreationStrategy> getTraversalCategory() {
-            return CreationStrategy.class;
-        }
-
-        @Override
-        public default int compareTo(final Class<? extends TraversalStrategy> otherTraversalCategory) {
-            if (otherTraversalCategory.equals(CreationStrategy.class))
-                return 0;
-            else if (otherTraversalCategory.equals(DecorationStrategy.class))
-                return -1;
-            else if (otherTraversalCategory.equals(OptimizationStrategy.class))
-                return -1;
-            else if (otherTraversalCategory.equals(ProviderOptimizationStrategy.class))
-                return -1;
-            else if (otherTraversalCategory.equals(FinalizationStrategy.class))
-                return -1;
-            else if (otherTraversalCategory.equals(VerificationStrategy.class))
-                return -1;
-            else
-                return 0;
-        }
-    }
-
-    /**
-     * Implemented by strategies that adds "application logic" to the traversal (e.g. {@link PartitionStrategy}).
-     */
     public interface DecorationStrategy extends TraversalStrategy<DecorationStrategy> {
 
         @Override
@@ -121,9 +92,7 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
 
         @Override
         public default int compareTo(final Class<? extends TraversalStrategy> otherTraversalCategory) {
-            if (otherTraversalCategory.equals(CreationStrategy.class))
-                return 1;
-            else if (otherTraversalCategory.equals(DecorationStrategy.class))
+            if (otherTraversalCategory.equals(DecorationStrategy.class))
                 return 0;
             else if (otherTraversalCategory.equals(OptimizationStrategy.class))
                 return -1;
@@ -152,9 +121,7 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
 
         @Override
         public default int compareTo(final Class<? extends TraversalStrategy> otherTraversalCategory) {
-            if (otherTraversalCategory.equals(CreationStrategy.class))
-                return 1;
-            else if (otherTraversalCategory.equals(DecorationStrategy.class))
+            if (otherTraversalCategory.equals(DecorationStrategy.class))
                 return 1;
             else if (otherTraversalCategory.equals(OptimizationStrategy.class))
                 return 0;
@@ -182,9 +149,7 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
 
         @Override
         public default int compareTo(final Class<? extends TraversalStrategy> otherTraversalCategory) {
-            if (otherTraversalCategory.equals(CreationStrategy.class))
-                return 1;
-            else if (otherTraversalCategory.equals(DecorationStrategy.class))
+            if (otherTraversalCategory.equals(DecorationStrategy.class))
                 return 1;
             else if (otherTraversalCategory.equals(OptimizationStrategy.class))
                 return 1;
@@ -212,9 +177,7 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
 
         @Override
         public default int compareTo(final Class<? extends TraversalStrategy> otherTraversalCategory) {
-            if (otherTraversalCategory.equals(CreationStrategy.class))
-                return 1;
-            else if (otherTraversalCategory.equals(DecorationStrategy.class))
+            if (otherTraversalCategory.equals(DecorationStrategy.class))
                 return 1;
             else if (otherTraversalCategory.equals(OptimizationStrategy.class))
                 return 1;
@@ -243,9 +206,7 @@ public interface TraversalStrategy<S extends TraversalStrategy> extends Serializ
 
         @Override
         public default int compareTo(final Class<? extends TraversalStrategy> otherTraversalCategory) {
-            if (otherTraversalCategory.equals(CreationStrategy.class))
-                return 1;
-            else if (otherTraversalCategory.equals(DecorationStrategy.class))
+            if (otherTraversalCategory.equals(DecorationStrategy.class))
                 return 1;
             else if (otherTraversalCategory.equals(OptimizationStrategy.class))
                 return 1;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
index 828f3b2..4c42ef6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java
@@ -22,7 +22,6 @@ import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.Bindings;
 import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
-import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
@@ -119,11 +118,6 @@ public class GraphTraversalSource implements TraversalSource {
     }
 
     @Override
-    public GraphTraversalSource withTranslator(final Translator translator) {
-        return (GraphTraversalSource) TraversalSource.super.withTranslator(translator);
-    }
-
-    @Override
     public GraphTraversalSource withComputer(final Computer computer) {
         return (GraphTraversalSource) TraversalSource.super.withComputer(computer);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/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
deleted file mode 100644
index 61ee8d4..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategy.java
+++ /dev/null
@@ -1,94 +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.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;
-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.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-
-import javax.script.Bindings;
-import javax.script.ScriptContext;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class TranslationStrategy extends AbstractTraversalStrategy<TraversalStrategy.CreationStrategy> implements TraversalStrategy.CreationStrategy {
-
-    private final TraversalSource traversalSource;
-    private final Translator translator;
-
-    public TranslationStrategy(final TraversalSource traversalSource, final Translator translator) {
-        this.traversalSource = traversalSource;
-        this.translator = translator;
-    }
-
-    @Override
-    public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (!(traversal.getParent() instanceof EmptyStep))
-            return;
-
-        // if the graph is RemoteGraph, RemoteStrategy will send the traversal
-        if (traversal.getGraph().isPresent() && traversal.getGraph().get() instanceof RemoteGraph)
-            return;
-
-        final Traversal.Admin<?, ?> translatedTraversal;
-        ////////////////
-        if (this.translator instanceof Translator.StepTranslator) {
-            // reflection based translation
-            translatedTraversal = (Traversal.Admin<?, ?>) this.translator.translate(traversal.getBytecode());
-        } else if (this.translator instanceof Translator.ScriptTranslator) {
-            try {
-                // script based translation
-                final GremlinScriptEngine scriptEngine = SingleGremlinScriptEngineManager.get(this.translator.getTargetLanguage());
-                final Bindings bindings = scriptEngine.createBindings();
-                bindings.putAll(scriptEngine.getContext().getBindings(ScriptContext.ENGINE_SCOPE));
-                bindings.put(this.translator.getTraversalSource().toString(), this.traversalSource);
-                translatedTraversal = (Traversal.Admin<?, ?>) scriptEngine.eval(traversal.getBytecode(), bindings);
-            } catch (final Exception e) {
-                throw new IllegalArgumentException(e.getMessage(), e);
-            }
-        } else {
-            throw new IllegalArgumentException("TranslationStrategy does not know how to process the provided translator type: " + this.translator.getClass().getSimpleName());
-        }
-        ////////////////
-        assert !translatedTraversal.isLocked();
-        assert !traversal.isLocked();
-        traversal.setSideEffects(translatedTraversal.getSideEffects());
-        TraversalHelper.removeAllSteps(traversal);
-        TraversalHelper.removeToTraversal((Step) translatedTraversal.getStartStep(), EmptyStep.instance(), traversal);
-    }
-
-    public TraversalSource getTraversalSource() {
-        return this.traversalSource;
-    }
-
-    public Translator getTranslator() {
-        return this.translator;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java
index d1933ad..e3be4c9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java
@@ -20,12 +20,9 @@
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.jsr223.SingleGremlinScriptEngineManager;
-import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy;
-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.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy;
 
 import javax.script.Bindings;
 import javax.script.ScriptEngine;
@@ -58,21 +55,6 @@ public final class ScriptTraversal<S, E> extends DefaultTraversal<S, E> {
             throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
     }
 
-    public ScriptTraversal(final Traversal traversal, TranslationStrategy translationStrategy, final Object... bindings) {
-        super();
-        final Translator translator = translationStrategy.getTranslator();
-        final TraversalSource traversalSource = translationStrategy.getTraversalSource().clone().withoutStrategies(TranslationStrategy.class, RemoteStrategy.class);
-        //
-        this.alias = translator.getTraversalSource().toString();
-        this.graph = traversalSource.getGraph();
-        this.factory = new TraversalSourceFactory<>(traversalSource);
-        this.scriptEngine = translator.getTargetLanguage();
-        this.script = translator.translate(traversal.asAdmin().getBytecode()).toString();
-        this.bindings = bindings;
-        if (this.bindings.length % 2 != 0)
-            throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
-    }
-
     @Override
     public void applyStrategies() throws IllegalStateException {
         try {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
index 41edffa..d95f8ef 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java
@@ -33,16 +33,17 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decorati
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
 import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection;
 import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.process.traversal.Bindings;
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy;
@@ -64,7 +65,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.Comp
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.LambdaRestrictionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.StandardVerificationStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -134,7 +134,6 @@ public final class CoreImports {
         CLASS_IMPORTS.add(Storage.class);
         CLASS_IMPORTS.add(Configuration.class);
         // strategies
-        CLASS_IMPORTS.add(TranslationStrategy.class);
         CLASS_IMPORTS.add(ConnectiveStrategy.class);
         CLASS_IMPORTS.add(ElementIdStrategy.class);
         CLASS_IMPORTS.add(EventStrategy.class);
@@ -162,6 +161,7 @@ public final class CoreImports {
         CLASS_IMPORTS.add(GraphTraversalSource.class);
         CLASS_IMPORTS.add(TraversalMetrics.class);
         CLASS_IMPORTS.add(Translator.class);
+        CLASS_IMPORTS.add(Bindings.class);
         // graph computer
         CLASS_IMPORTS.add(Computer.class);
         CLASS_IMPORTS.add(ComputerResult.class);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslatorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslatorTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslatorTest.java
index f76fa7a..5ce48e5 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslatorTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyTranslatorTest.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyTranslator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.Lambda;
 import org.junit.Test;
@@ -43,7 +44,8 @@ public class GroovyTranslatorTest extends AbstractGremlinTest {
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
     public void shouldSupportStringSupplierLambdas() throws Exception {
-        final GraphTraversalSource g = graph.traversal().withTranslator(GroovyTranslator.of("g", "__"));
+        GraphTraversalSource g = graph.traversal();
+        g = g.withStrategies(new TranslationStrategy(g, GroovyTranslator.of("g", "__")));
         GraphTraversal.Admin<Vertex, Integer> t = g.withSideEffect("lengthSum", 0).withSack(1)
                 .V()
                 .filter(Lambda.predicate("it.get().label().equals('person')"))

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
index ee233c4..ea5fc2b 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
 import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.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.ConnectiveP;
@@ -91,7 +92,7 @@ public final class GroovyTranslator implements Translator.ScriptTranslator {
     private String internalTranslate(final String start, final Bytecode bytecode) {
         final StringBuilder traversalScript = new StringBuilder(start);
         final Bytecode clone = BytecodeHelper.filterInstructions(bytecode,
-                instruction -> !Arrays.asList("withTranslator", "withStrategies").contains(instruction.getOperator()));
+                instruction -> !instruction.getOperator().equals(TraversalSource.Symbols.withStrategies));
         for (final Bytecode.Instruction instruction : clone.getSourceInstructions()) {
             processInstruction(traversalScript, instruction);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
index b2d1cb1..a63237c 100644
--- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
+++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java
@@ -26,6 +26,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
 import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.BytecodeHelper;
@@ -87,7 +88,7 @@ public final class PythonTranslator implements Translator.ScriptTranslator {
     @Override
     public String translate(final Bytecode bytecode) {
         final String traversal = this.internalTranslate(this.traversalSource, BytecodeHelper.filterInstructions(bytecode,
-                instruction -> !Arrays.asList("withTranslator", "withStrategies").contains(instruction.getOperator())));
+                instruction -> !instruction.getOperator().equals(TraversalSource.Symbols.withStrategies)));
         //if (this.importStatics)
         //    assert !traversal.contains("__.");
         return traversal;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/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 b923453..9803139 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
@@ -69,10 +69,6 @@ class GraphTraversalSource(object):
     source = GraphTraversalSource(self.graph, self.traversal_strategies, Bytecode(self.bytecode))
     source.bytecode.add_source("withStrategies", *args)
     return source
-  def withTranslator(self, *args):
-    source = GraphTraversalSource(self.graph, self.traversal_strategies, Bytecode(self.bytecode))
-    source.bytecode.add_source("withTranslator", *args)
-    return source
   def withoutStrategies(self, *args):
     source = GraphTraversalSource(self.graph, self.traversal_strategies, Bytecode(self.bytecode))
     source.bytecode.add_source("withoutStrategies", *args)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/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 3b21cd5..2a55228 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
@@ -19,16 +19,17 @@
 
 package org.apache.tinkerpop.gremlin.python.jsr223;
 
+import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 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.EmptyTraversal;
-import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONReader;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
+import javax.script.Bindings;
 import javax.script.ScriptContext;
 import javax.script.ScriptEngine;
 import java.io.ByteArrayInputStream;
@@ -74,10 +75,11 @@ public class PythonGraphSONJavaTranslator<S extends TraversalSource, T extends T
 
         try {
             final ScriptEngine jythonEngine = ScriptEngineCache.get("jython");
-            jythonEngine.getBindings(ScriptContext.ENGINE_SCOPE)
-                    .put(this.pythonTranslator.getTraversalSource(), jythonEngine.eval("RemoteGraph(None).traversal()"));
-            final String graphsonBytecode = jythonEngine.eval("GraphSONWriter.writeObject(" + this.pythonTranslator.translate(bytecode) + ")").toString();
-            //System.out.println(graphsonBytecode + "!!!!");
+            final Bindings bindings = jythonEngine.createBindings();
+            bindings.putAll(jythonEngine.getBindings(ScriptContext.ENGINE_SCOPE));
+            bindings.put(this.pythonTranslator.getTraversalSource(), jythonEngine.eval("RemoteGraph(None).traversal()"));
+            bindings.putAll(bytecode.getBindings());
+            final String graphsonBytecode = jythonEngine.eval("GraphSONWriter.writeObject(" + this.pythonTranslator.translate(bytecode) + ")", bindings).toString();
             return this.javaTranslator.translate(this.reader.readObject(new ByteArrayInputStream(graphsonBytecode.getBytes()), Bytecode.class));
         } catch (final Exception e) {
             throw new IllegalArgumentException(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/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 b40cbec..1318da0 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
@@ -22,6 +22,7 @@ package org.apache.tinkerpop.gremlin.python.jsr223;
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
@@ -29,10 +30,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 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.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerEdge;
@@ -161,7 +162,8 @@ public class PythonProvider extends AbstractGraphProvider {
             } catch (final ScriptException e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }
-            return graph.traversal().withTranslator(new PythonGraphSONJavaTranslator<>(new PythonTranslator("g", "__", IMPORT_STATICS), new JavaTranslator<>(graph.traversal(), __.class))); // the bypass translator will ensure that gremlin-groovy is ultimately used
+            final GraphTraversalSource g = graph.traversal();
+            return g.withStrategies(new TranslationStrategy(g, new PythonGraphSONJavaTranslator<>(new PythonTranslator("g", "__", IMPORT_STATICS), new JavaTranslator<>(graph.traversal(), __.class))));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/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
index 306f054..571cbb5 100644
--- 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
@@ -20,8 +20,8 @@
 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.process.traversal.strategy.decoration.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 /**
@@ -31,6 +31,7 @@ public class RemoteGraphGroovyTranslatorProvider extends RemoteGraphProvider {
 
     @Override
     public GraphTraversalSource traversal(final Graph graph) {
-        return graph.traversal().withTranslator(GroovyTranslator.of("g","__"));
+        final GraphTraversalSource g = graph.traversal();
+        return g.withStrategies(new TranslationStrategy(g, GroovyTranslator.of("g", "__")));
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index 2c404b3..63c6e68 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -86,7 +86,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index 3bd485a..c574601 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -80,7 +80,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
 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;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
deleted file mode 100644
index 3234833..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/creation/TranslationStrategyProcessTest.java
+++ /dev/null
@@ -1,67 +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.strategy.creation;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class TranslationStrategyProcessTest extends AbstractGremlinProcessTest {
-    private static final Logger logger = LoggerFactory.getLogger(TranslationStrategyProcessTest.class);
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void shouldNotHaveAnonymousTraversalMixups() throws Exception {
-        if (!g.getStrategies().getStrategy(TranslationStrategy.class).isPresent()) {
-            logger.debug("No " + TranslationStrategy.class.getSimpleName() + " is registered and thus, skipping test.");
-            return;
-        }
-
-        final GraphTraversalSource a = g;
-        final GraphTraversalSource b = g.withoutStrategies(TranslationStrategy.class);
-
-        assert a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
-        assert !b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
-
-        assertEquals(6l, a.V().out().count().next().longValue());
-        assertEquals(6l, b.V().out().count().next().longValue());
-
-        assert a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
-        assert !b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
-
-        assertEquals(2l, a.V().repeat(__.out()).times(2).count().next().longValue());
-        assertEquals(2l, b.V().repeat(__.out()).times(2).count().next().longValue());
-
-        assert a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
-        assert !b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
new file mode 100644
index 0000000..b7e5dac
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategy.java
@@ -0,0 +1,108 @@
+/*
+ *  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.strategy.decoration;
+
+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.remote.traversal.strategy.decoration.RemoteStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+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.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TranslationStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private final TraversalSource traversalSource;
+    private final Translator translator;
+
+    private static final Set<Class<? extends DecorationStrategy>> POSTS = new HashSet<>(Arrays.asList(
+            ConnectiveStrategy.class,
+            ElementIdStrategy.class,
+            EventStrategy.class,
+            HaltedTraverserStrategy.class,
+            PartitionStrategy.class,
+            RequirementsStrategy.class,
+            SackStrategy.class,
+            SideEffectStrategy.class,
+            SubgraphStrategy.class,
+            RemoteStrategy.class));
+
+    public TranslationStrategy(final TraversalSource traversalSource, final Translator translator) {
+        this.traversalSource = traversalSource;
+        this.translator = translator;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (!(traversal.getParent() instanceof EmptyStep))
+            return;
+
+        // if the graph is RemoteGraph, RemoteStrategy will send the traversal
+        if (traversal.getGraph().isPresent() && traversal.getGraph().get() instanceof RemoteGraph)
+            return;
+
+        final Traversal.Admin<?, ?> translatedTraversal;
+        ////////////////
+        if (this.translator instanceof Translator.StepTranslator) {
+            // reflection based translation
+            translatedTraversal = (Traversal.Admin<?, ?>) this.translator.translate(traversal.getBytecode());
+        } else if (this.translator instanceof Translator.ScriptTranslator) {
+            try {
+                // script based translation
+                final GremlinScriptEngine scriptEngine = SingleGremlinScriptEngineManager.get(this.translator.getTargetLanguage());
+                final Bindings bindings = scriptEngine.createBindings();
+                bindings.putAll(scriptEngine.getContext().getBindings(ScriptContext.ENGINE_SCOPE));
+                bindings.put(this.translator.getTraversalSource().toString(), this.traversalSource);
+                translatedTraversal = (Traversal.Admin<?, ?>) scriptEngine.eval(traversal.getBytecode(), bindings);
+            } catch (final Exception e) {
+                throw new IllegalArgumentException(e.getMessage(), e);
+            }
+        } else {
+            throw new IllegalArgumentException("TranslationStrategy does not know how to process the provided translator type: " + this.translator.getClass().getSimpleName());
+        }
+        ////////////////
+        assert !translatedTraversal.isLocked();
+        assert !traversal.isLocked();
+        traversal.setSideEffects(translatedTraversal.getSideEffects());
+        TraversalHelper.removeAllSteps(traversal);
+        TraversalHelper.removeToTraversal((Step) translatedTraversal.getStartStep(), EmptyStep.instance(), traversal);
+    }
+
+
+    @Override
+    public Set<Class<? extends DecorationStrategy>> applyPost() {
+        return POSTS;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategyProcessTest.java
new file mode 100644
index 0000000..a280a9c
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/TranslationStrategyProcessTest.java
@@ -0,0 +1,67 @@
+/*
+ *  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.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class TranslationStrategyProcessTest extends AbstractGremlinProcessTest {
+    private static final Logger logger = LoggerFactory.getLogger(TranslationStrategyProcessTest.class);
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldNotHaveAnonymousTraversalMixups() throws Exception {
+        if (!g.getStrategies().getStrategy(TranslationStrategy.class).isPresent()) {
+            logger.debug("No " + TranslationStrategy.class.getSimpleName() + " is registered and thus, skipping test.");
+            return;
+        }
+
+        final GraphTraversalSource a = g;
+        final GraphTraversalSource b = g.withoutStrategies(TranslationStrategy.class);
+
+        assert a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+        assert !b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+
+        assertEquals(6l, a.V().out().count().next().longValue());
+        assertEquals(6l, b.V().out().count().next().longValue());
+
+        assert a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+        assert !b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+
+        assertEquals(2l, a.V().repeat(__.out()).times(2).count().next().longValue());
+        assertEquals(2l, b.V().repeat(__.out()).times(2).count().next().longValue());
+
+        assert a.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+        assert !b.getStrategies().getStrategy(TranslationStrategy.class).isPresent();
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/jsr223/TinkerGraphGroovyTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/jsr223/TinkerGraphGroovyTranslatorProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/jsr223/TinkerGraphGroovyTranslatorProvider.java
index 0dc9ea5..9f1cf52 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/jsr223/TinkerGraphGroovyTranslatorProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/jsr223/TinkerGraphGroovyTranslatorProvider.java
@@ -25,6 +25,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionCompu
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
@@ -70,7 +71,9 @@ public class TinkerGraphGroovyTranslatorProvider extends TinkerGraphProvider {
         if ((Boolean) graph.configuration().getProperty("skipTest"))
             return graph.traversal();
             //throw new VerificationException("This test current does not work with Gremlin-Python", EmptyTraversal.instance());
-        else
-            return graph.traversal().withTranslator(GroovyTranslator.of("g","__"));
+        else {
+            final GraphTraversalSource g = graph.traversal();
+            return g.withStrategies(new TranslationStrategy(g, GroovyTranslator.of("g", "__")));
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/jsr223/TinkerGraphJavaTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/jsr223/TinkerGraphJavaTranslatorProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/jsr223/TinkerGraphJavaTranslatorProvider.java
index 18dabaa..7bdcaf5 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/jsr223/TinkerGraphJavaTranslatorProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/jsr223/TinkerGraphJavaTranslatorProvider.java
@@ -20,13 +20,14 @@
 package org.apache.tinkerpop.gremlin.tinkergraph.process.jsr223;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
 
@@ -73,7 +74,7 @@ public class TinkerGraphJavaTranslatorProvider extends TinkerGraphProvider {
             //throw new VerificationException("This test current does not work with Gremlin-Python", EmptyTraversal.instance());
         else {
             final GraphTraversalSource g = graph.traversal();
-            return g.withTranslator(JavaTranslator.of(g,__.class));
+            return g.withStrategies(new TranslationStrategy(g, JavaTranslator.of(g, __.class)));
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f7e2945a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/TinkerGraphGraphSONTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/TinkerGraphGraphSONTranslatorProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/TinkerGraphGraphSONTranslatorProvider.java
index b85b8dc..3248efd 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/TinkerGraphGraphSONTranslatorProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/graphson/TinkerGraphGraphSONTranslatorProvider.java
@@ -20,6 +20,7 @@
 package org.apache.tinkerpop.gremlin.tinkergraph.structure.io.graphson;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
@@ -27,10 +28,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 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.jsr223.JavaTranslator;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
 
@@ -87,7 +88,7 @@ public class TinkerGraphGraphSONTranslatorProvider extends TinkerGraphProvider {
             //throw new VerificationException("This test current does not work with Gremlin-Python", EmptyTraversal.instance());
         else {
             final GraphTraversalSource g = graph.traversal();
-            return g.withTranslator(new GraphSONTranslator<>(JavaTranslator.of(g, __.class)));
+            return g.withStrategies(new TranslationStrategy(g, new GraphSONTranslator<>(JavaTranslator.of(g, __.class))));
         }
     }
 }
\ No newline at end of file