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/02/09 01:36:14 UTC

[3/4] incubator-tinkerpop git commit: The most brutal refactor. There is no such thing as a TraversalSource.Builder anymore. All there are are TraversalSources. These are simply a wrapper of a TraversalStrategy and a Graph. There is no such thing as a Tr

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
deleted file mode 100644
index 3da8566..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
+++ /dev/null
@@ -1,57 +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.finalization;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-
-/**
- * A {@link Step} can extend {@link EngineDependent}. If it does, that means that the steps internal logic is
- * modulated by whether the execution is via {@link Type#STANDARD} or {@link Type#COMPUTER}.
- * {@code EngineDependentStrategy} simply locates all engine dependent steps and provides the respective
- * {@link TraversalEngine}.
- *
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class EngineDependentStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy>
-        implements TraversalStrategy.FinalizationStrategy {
-
-    private static final EngineDependentStrategy INSTANCE = new EngineDependentStrategy();
-
-    private EngineDependentStrategy() {
-    }
-
-    @Override
-    public void apply(final Traversal.Admin<?, ?> traversal) {
-        for (Step step : traversal.getSteps()) {
-            if (step instanceof EngineDependent) {
-                ((EngineDependent) step).onEngine(traversal.getEngine());
-            }
-        }
-    }
-
-    public static EngineDependentStrategy instance() {
-        return INSTANCE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
index cb58762..c7cc700 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
@@ -24,10 +24,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaCollectingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.SupplyingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
@@ -61,7 +61,7 @@ public final class LazyBarrierStrategy extends AbstractTraversalStrategy<Travers
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
+        if (traversal.getStrategies().onGraphComputer())
             return;
 
         if (traversal.getTraverserRequirements().contains(TraverserRequirement.PATH))

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
new file mode 100644
index 0000000..76943a3
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
@@ -0,0 +1,83 @@
+/*
+ * 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.finalization;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.util.Collections;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalVertexProgramStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy> implements TraversalStrategy.FinalizationStrategy {
+
+    private static final Set<Class<? extends FinalizationStrategy>> PRIORS = Collections.singleton(ProfileStrategy.class);
+    private transient Function<Graph, GraphComputer> graphComputerFunction;
+
+    private TraversalVertexProgramStrategy() {
+
+    }
+
+    public TraversalVertexProgramStrategy(final Function<Graph, GraphComputer> graphComputerFunction) {
+        this.graphComputerFunction = graphComputerFunction;
+    }
+
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (traversal.getParent() instanceof EmptyStep) {
+            traversal.addStep(new ComputerResultStep<>(traversal, null == this.graphComputerFunction ? null : this.graphComputerFunction.apply(traversal.getGraph().get()), true));
+            TraversalVertexProgramStrategy.onlyGlobalChildren(traversal);
+        }
+    }
+
+    private static void onlyGlobalChildren(final Traversal.Admin<?, ?> traversal) {
+        for (final Step step : traversal.getSteps()) {
+            if (step instanceof EngineDependent)
+                ((EngineDependent) step).onGraphComputer();
+            if (step instanceof TraversalParent) {
+                ((TraversalParent) step).getGlobalChildren().forEach(TraversalVertexProgramStrategy::onlyGlobalChildren);
+            }
+        }
+    }
+
+    @Override
+    public Set<Class<? extends FinalizationStrategy>> applyPrior() {
+        return PRIORS;
+    }
+
+    public static Optional<GraphComputer> getGraphComputer(final Graph graph, final TraversalStrategies strategies) {
+        final Optional<TraversalStrategy<?>> optional = strategies.toList().stream().filter(strategy -> strategy instanceof TraversalVertexProgramStrategy).findAny();
+        return optional.isPresent() ? Optional.of(((TraversalVertexProgramStrategy) optional.get()).graphComputerFunction.apply(graph)) : Optional.empty();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
index 5a8a03a..c060ef6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
@@ -80,7 +80,7 @@ public final class MatchPredicateStrategy extends AbstractTraversalStrategy<Trav
                     traversal.removeStep(nextStep);
                     matchStep.addGlobalChild(new DefaultTraversal<>().addStep(nextStep));
                     nextStep = matchStep.getNextStep();
-                } else if (nextStep instanceof DedupGlobalStep && !((DedupGlobalStep) nextStep).getScopeKeys().isEmpty() && ((DedupGlobalStep) nextStep).getLocalChildren().isEmpty() && !traversal.getEngine().isComputer()) {
+                } else if (nextStep instanceof DedupGlobalStep && !((DedupGlobalStep) nextStep).getScopeKeys().isEmpty() && ((DedupGlobalStep) nextStep).getLocalChildren().isEmpty() && !traversal.getStrategies().onGraphComputer()) {
                     traversal.removeStep(nextStep);
                     matchStep.setDedupLabels(((DedupGlobalStep<?>) nextStep).getScopeKeys());
                     nextStep = matchStep.getNextStep();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
index bc8528c..2ecb634 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
@@ -71,8 +71,6 @@ public final class ComputerVerificationStrategy extends AbstractTraversalStrateg
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isStandard())
-            return;
 
         Step<?, ?> endStep = traversal.getEndStep();
         while (endStep instanceof ComputerAwareStep.EndStep || endStep instanceof ComputerResultStep) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 43fc692..b05089b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -20,11 +20,9 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -56,7 +54,6 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     protected TraversalParent traversalParent = EmptyStep.instance();
     protected TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
     protected TraversalStrategies strategies;
-    protected TraversalEngine traversalEngine = StandardTraversalEngine.instance(); // necessary for strategies that need the engine in OLAP message passing (not so bueno)
     protected boolean locked = false;
     protected Set<TraverserRequirement> traverserRequirements = new HashSet<>();
 
@@ -86,13 +83,11 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
             if (step instanceof TraversalParent) {
                 for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
                     globalChild.setStrategies(this.strategies);
-                    globalChild.setEngine(this.traversalEngine);
                     if (hasGraph) globalChild.setGraph(this.graph);
                     globalChild.applyStrategies();
                 }
                 for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
                     localChild.setStrategies(this.strategies);
-                    localChild.setEngine(StandardTraversalEngine.instance());
                     if (hasGraph) localChild.setGraph(this.graph);
                     localChild.applyStrategies();
                 }
@@ -103,16 +98,6 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     }
 
     @Override
-    public TraversalEngine getEngine() {
-        return this.traversalEngine;
-    }
-
-    @Override
-    public void setEngine(final TraversalEngine engine) {
-        this.traversalEngine = engine;
-    }
-
-    @Override
     public Set<TraverserRequirement> getTraverserRequirements() {
         Set<TraverserRequirement> requirements = new HashSet<>();
         for (Step step : this.getSteps()) {
@@ -124,7 +109,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
             requirements.add(TraverserRequirement.SIDE_EFFECTS);
         if (null != this.getSideEffects().getSackInitialValue())
             requirements.add(TraverserRequirement.SACK);
-        if (this.getEngine().isComputer())
+        if (this.strategies.onGraphComputer())
             requirements.add(TraverserRequirement.BULK);
         if (requirements.contains(TraverserRequirement.ONE_BULK))
             requirements.remove(TraverserRequirement.BULK);
@@ -241,7 +226,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
 
     @Override
     public void setStrategies(final TraversalStrategies strategies) {
-        this.strategies = strategies.clone();
+        this.strategies = strategies.clone(); // todo: why do we clone this?
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
index f6fc97c..70c4900 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
@@ -20,12 +20,10 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -85,16 +83,6 @@ public class EmptyTraversal<S, E> implements Traversal.Admin<S, E> {
     }
 
     @Override
-    public TraversalEngine getEngine() {
-        return StandardTraversalEngine.instance();
-    }
-
-    @Override
-    public void setEngine(final TraversalEngine engine) {
-
-    }
-
-    @Override
     public void addStarts(final Iterator<Traverser<S>> starts) {
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
index 35e9991..7ab980d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSourceFactory;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
 
@@ -34,13 +35,13 @@ import java.util.function.Function;
  */
 public final class TraversalScriptFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
 
-    private final TraversalSource.Builder traversalSourceBuilder;
+    private final TraversalSourceFactory traversalSourceFactory;
     private final String scriptEngineName;
     private final String traversalScript;
     private final Object[] bindings;
 
-    public TraversalScriptFunction(final TraversalSource.Builder traversalSourceBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
-        this.traversalSourceBuilder = traversalSourceBuilder;
+    public TraversalScriptFunction(final TraversalSource traversalSource, final String scriptEngineName, final String traversalScript, final Object... bindings) {
+        this.traversalSourceFactory = new TraversalSourceFactory<>(traversalSource);
         this.scriptEngineName = scriptEngineName;
         this.traversalScript = traversalScript;
         this.bindings = bindings;
@@ -52,7 +53,7 @@ public final class TraversalScriptFunction<S, E> implements Function<Graph, Trav
         try {
             final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
             final Bindings engineBindings = engine.createBindings();
-            engineBindings.put("g", this.traversalSourceBuilder.create(graph));
+            engineBindings.put("g", this.traversalSourceFactory.createTraversalSource(graph));
             for (int i = 0; i < this.bindings.length; i = i + 2) {
                 engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
index 1998512..8636a06 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
@@ -18,8 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
 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.GraphTraversalSource;
@@ -35,25 +33,19 @@ public final class TraversalScriptHelper {
 
     public static <S, E> Traversal.Admin<S, E> compute(
             final Graph graph,
-            final TraversalSource.Builder builder,
+            final TraversalSource traversalSource,
             final String scriptEngineName,
             final String traversalScript,
             final Object... bindings) {
 
         try {
-            if (builder.create(graph).getGraphComputer().isPresent()) {
-                final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
-                final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
-                return program.computerResultTraversal(result);
-            } else {
-                return new TraversalScriptFunction<S, E>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
-            }
+            return new TraversalScriptFunction<S, E>(traversalSource, scriptEngineName, traversalScript, bindings).apply(graph);
         } catch (final Exception e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
     }
 
     public static <S, E> Traversal.Admin<S, E> compute(final String script, final GraphTraversalSource g, final Object... bindings) {
-        return TraversalScriptHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
+        return TraversalScriptHelper.compute(g.getGraph(), g, "gremlin-groovy", script, bindings);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 6c834d3..93bd810 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -25,8 +25,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.io.Io;
 import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
 import org.apache.tinkerpop.gremlin.structure.util.FeatureDescriptor;
@@ -152,22 +150,36 @@ public interface Graph extends AutoCloseable, Host {
      * provides methods for creating a {@link Traversal} given the context of {@link TraversalStrategy} implementations
      * and a {@link GraphComputer}.
      *
+     * @param traversalSource The traversal source to use
+     * @param <C>             The traversal source class
+     */
+    public default <C extends TraversalSource> C traversal(final TraversalSource traversalSource) {
+        return (C) traversalSource; // make this a class
+    }
+
+
+    /*
+     * Generate a {@link TraversalSource} using the specified {@code TraversalSource.Builder}. The {@link TraversalSource}
+     * provides methods for creating a {@link Traversal} given the context of {@link TraversalStrategy} implementations
+     * and a {@link GraphComputer}.
+     *
      * @param sourceBuilder The traversal source builder to use
      * @param <C>           The traversal source class
-     */
+
     public default <C extends TraversalSource> C traversal(final TraversalSource.Builder<C> sourceBuilder) {
         return sourceBuilder.create(this);
     }
+    *
 
     /**
-     * Generate a {@link GraphTraversalSource} instance using the {@link StandardTraversalEngine}. The
+     * Generate a {@link GraphTraversalSource} instance. The
      * {@link TraversalSource} provides methods for creating a {@link Traversal} given the context of
      * {@link TraversalStrategy} implementations and a {@link GraphComputer}.
      *
      * @return A standard graph traversal source
      */
     public default GraphTraversalSource traversal() {
-        return this.traversal(GraphTraversalSource.build().engine(StandardTraversalEngine.build()));
+        return this.traversal(new GraphTraversalSource(this));
     }
 
     /**
@@ -365,9 +377,9 @@ public interface Graph extends AutoCloseable, Host {
             public static IllegalArgumentException variableValueCanNotBeNull() {
                 return new IllegalArgumentException("Graph variable value can not be null");
             }
-            
+
             public static UnsupportedOperationException dataTypeOfVariableValueNotSupported(final Object val) {
-            	return dataTypeOfVariableValueNotSupported(val, null);
+                return dataTypeOfVariableValueNotSupported(val, null);
             }
 
             public static UnsupportedOperationException dataTypeOfVariableValueNotSupported(final Object val, final Exception rootCause) {
@@ -1143,15 +1155,15 @@ public interface Graph extends AutoCloseable, Host {
                     new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph") :
                     new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
         }
-        
+
         public static NoSuchElementException elementNotFound(final Class<? extends Element> elementClass, final Object id, final Exception rootCause) {
-        	NoSuchElementException elementNotFoundException;
-        	if(null == id)
-        		elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph");
-    		else
-    			elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
-        	elementNotFoundException.initCause(rootCause);
-			return elementNotFoundException;
+            NoSuchElementException elementNotFoundException;
+            if (null == id)
+                elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph");
+            else
+                elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
+            elementNotFoundException.initCause(rootCause);
+            return elementNotFoundException;
         }
     }
 
@@ -1231,7 +1243,7 @@ public interface Graph extends AutoCloseable, Host {
          * default, an empty array is assigned and it is thus assumed that all computers are excluded when an
          * {@code OptOut} annotation is used, therefore this value must be overridden to be more specific.
          */
-        public String[] computers() default { };
+        public String[] computers() default {};
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
index 9ae8116..87ec589 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
@@ -25,18 +25,17 @@ import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
 import org.javatuples.Pair;
 
@@ -45,6 +44,7 @@ import java.lang.reflect.Modifier;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -137,14 +137,10 @@ public final class StringFactory {
         return graphComputer.getClass().getSimpleName().toLowerCase();
     }
 
-    public static String traversalEngineString(final TraversalEngine traversalEngine) {
-        return traversalEngine.getClass().getSimpleName().toLowerCase();
-    }
-
     public static String traversalSourceString(final TraversalSource traversalSource) {
-        final String graphString = traversalSource.getGraph().orElse(EmptyGraph.instance()).toString();
-        final String graphComputerString = traversalSource.getGraphComputer().isPresent() ? traversalSource.getGraphComputer().get().toString() : "standard";
-        return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + graphComputerString + R_BRACKET;
+        final String graphString = traversalSource.getGraph().toString();
+        final Optional<GraphComputer> optional = TraversalVertexProgramStrategy.getGraphComputer(traversalSource.getGraph(), traversalSource.getStrategies());
+        return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + (optional.isPresent() ? optional.get().toString() : "standard") + R_BRACKET;
     }
 
     public static String featureString(final Graph.Features features) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
index 348b2d0..47bee6a 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
@@ -19,165 +19,108 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class ConnectiveStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractConnectiveStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyConnectiveStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(ConnectiveStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractConnectiveStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyConnectiveStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractConnectiveStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyMatchWhereStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(ConnectiveStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().applyStrategies();
-            traversal.asAdmin().setEngine(traversalEngine);
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyMatchWhereStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.has("name", "stephen").or().where(__.out("knows").has("name", "stephen")), __.or(__.has("name", "stephen"), __.where(__.out("knows").has("name", "stephen")))},
-                    {__.out("a").out("b").and().out("c").or().out("d"), __.or(__.and(__.out("a").out("b"), __.out("c")), __.out("d"))},
-                    {__.as("1").out("a").out("b").as("2").and().as("3").out("c").as("4").or().as("5").out("d").as("6"), __.or(__.and(__.as("1").out("a").out("b").as("2"), __.as("3").out("c").as("4")), __.as("5").out("d").as("6"))},
-                    {__.as("1").out("a").out("b").and().as("3").out("c").or().as("5").out("d"), __.or(__.and(__.as("1").out("a").out("b"), __.as("3").out("c")), __.as("5").out("d"))},
-                    {__.as("1").out("a").out("b").or().as("3").out("c").and().as("5").out("d"), __.or(__.as("1").out("a").out("b"), __.and(__.as("3").out("c"), __.as("5").out("d")))},
-                    {__.as("a").out().as("b").and().as("c").in().as("d"), __.and(__.as("a").out().as("b"), __.as("c").in().as("d"))},
-                    {__.union(__.as("a").out("l1").as("b").or().as("c").in("l2").as("d"), __.as("e").out("l3").as("f").and().as("g").in("l4").as("h")), __.union(__.or(__.as("a").out("l1").as("b"), __.as("c").in("l2").as("d")), __.and(__.as("e").out("l3").as("f"), __.as("g").in("l4").as("h")))},
-                    {__
-                    .as("a1").out("a").as("a2").or()
-                    .as("b1").out("b").as("b2").and()
-                    .as("c1").out("c").as("c2").or()
-                    .as("d1").out("d").as("d2").or()
-                    .as("e1").out("e").as("e2").and()
-                    .as("f1").out("f").as("f2").and()
-                    .as("g1").out("g").as("g2").or()
-                    .as("h1").out("h").as("h2").or(__
-                            .as("i1").out("i").as("i2").or()
-                            .as("j1").out("j").as("j2").and()
-                            .as("k1").out("k").as("k2")).and()
-                    .as("l1").out("l").as("l2").and()
-                    .as("m1").out("m").as("m2").and()
-                    .as("n1").out("n").as("n2"),
-                    // EXPECT:
-                    __.or(
-                            __.as("a1").out("a").as("a2"),
-                            __.or(
-                                    __.and(
-                                            __.as("b1").out("b").as("b2"),
-                                            __.as("c1").out("c").as("c2")
-                                    ),
-                                    __.or(
-                                            __.as("d1").out("d").as("d2"),
-                                            __.or(
-                                                    __.and(
-                                                            __.as("e1").out("e").as("e2"),
-                                                            __.and(
-                                                                    __.as("f1").out("f").as("f2"),
-                                                                    __.as("g1").out("g").as("g2")
-                                                            )
-                                                    ),
-                                                    __.and(
-                                                            __.as("h1").out("h").as("h2").or(
-                                                                    __.or(
-                                                                            __.as("i1").out("i").as("i2"),
-                                                                            __.and(
-                                                                                    __.as("j1").out("j").as("j2"),
-                                                                                    __.as("k1").out("k").as("k2")
-                                                                            )
-                                                                    )
-                                                            ),
-                                                            __.and(
-                                                                    __.as("l1").out("l").as("l2"),
-                                                                    __.and(
-                                                                            __.as("m1").out("m").as("m2"),
-                                                                            __.as("n1").out("n").as("n2")
-                                                                    )
-                                                            )
-                                                    )
-                                            )
-                                    )
-                            )
-                    )
-            }
-            });
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+        return Arrays.asList(new Traversal[][]{
+                {__.has("name", "stephen").or().where(__.out("knows").has("name", "stephen")), __.or(__.has("name", "stephen"), __.where(__.out("knows").has("name", "stephen")))},
+                {__.out("a").out("b").and().out("c").or().out("d"), __.or(__.and(__.out("a").out("b"), __.out("c")), __.out("d"))},
+                {__.as("1").out("a").out("b").as("2").and().as("3").out("c").as("4").or().as("5").out("d").as("6"), __.or(__.and(__.as("1").out("a").out("b").as("2"), __.as("3").out("c").as("4")), __.as("5").out("d").as("6"))},
+                {__.as("1").out("a").out("b").and().as("3").out("c").or().as("5").out("d"), __.or(__.and(__.as("1").out("a").out("b"), __.as("3").out("c")), __.as("5").out("d"))},
+                {__.as("1").out("a").out("b").or().as("3").out("c").and().as("5").out("d"), __.or(__.as("1").out("a").out("b"), __.and(__.as("3").out("c"), __.as("5").out("d")))},
+                {__.as("a").out().as("b").and().as("c").in().as("d"), __.and(__.as("a").out().as("b"), __.as("c").in().as("d"))},
+                {__.union(__.as("a").out("l1").as("b").or().as("c").in("l2").as("d"), __.as("e").out("l3").as("f").and().as("g").in("l4").as("h")), __.union(__.or(__.as("a").out("l1").as("b"), __.as("c").in("l2").as("d")), __.and(__.as("e").out("l3").as("f"), __.as("g").in("l4").as("h")))},
+                {__
+                        .as("a1").out("a").as("a2").or()
+                        .as("b1").out("b").as("b2").and()
+                        .as("c1").out("c").as("c2").or()
+                        .as("d1").out("d").as("d2").or()
+                        .as("e1").out("e").as("e2").and()
+                        .as("f1").out("f").as("f2").and()
+                        .as("g1").out("g").as("g2").or()
+                        .as("h1").out("h").as("h2").or(__
+                                .as("i1").out("i").as("i2").or()
+                                .as("j1").out("j").as("j2").and()
+                                .as("k1").out("k").as("k2")).and()
+                        .as("l1").out("l").as("l2").and()
+                        .as("m1").out("m").as("m2").and()
+                        .as("n1").out("n").as("n2"),
+                        // EXPECT:
+                        __.or(
+                                __.as("a1").out("a").as("a2"),
+                                __.or(
+                                        __.and(
+                                                __.as("b1").out("b").as("b2"),
+                                                __.as("c1").out("c").as("c2")
+                                        ),
+                                        __.or(
+                                                __.as("d1").out("d").as("d2"),
+                                                __.or(
+                                                        __.and(
+                                                                __.as("e1").out("e").as("e2"),
+                                                                __.and(
+                                                                        __.as("f1").out("f").as("f2"),
+                                                                        __.as("g1").out("g").as("g2")
+                                                                )
+                                                        ),
+                                                        __.and(
+                                                                __.as("h1").out("h").as("h2").or(
+                                                                        __.or(
+                                                                                __.as("i1").out("i").as("i2"),
+                                                                                __.and(
+                                                                                        __.as("j1").out("j").as("j2"),
+                                                                                        __.as("k1").out("k").as("k2")
+                                                                                )
+                                                                        )
+                                                                ),
+                                                                __.and(
+                                                                        __.as("l1").out("l").as("l2"),
+                                                                        __.and(
+                                                                                __.as("m1").out("m").as("m2"),
+                                                                                __.as("n1").out("n").as("n2")
+                                                                        )
+                                                                )
+                                                        )
+                                                )
+                                        )
+                                )
+                        )
+                }
+        });
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
index 40bf867..97f8c7f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
@@ -19,82 +19,56 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class LazyBarrierStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractLazyBarrierStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> data() {
+        return generateTestParameters();
     }
 
-    private static abstract class AbstractLazyBarrierStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        protected TraversalEngine traversalEngine;
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        void applyAdjacentToIncidentStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(LazyBarrierStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyAdjacentToIncidentStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
+    void applyAdjacentToIncidentStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(LazyBarrierStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
+    }
 
-        static Iterable<Object[]> generateTestParameters() {
-            final int size = LazyBarrierStrategy.MAX_BARRIER_SIZE;
-            return Arrays.asList(new Traversal[][]{
-                    {__.out().count(), __.out().count()},
-                    {__.out().out().count(), __.out().out().count()},
-                    {__.out().out().out().count(), __.out().out().barrier(size).out().barrier(size).count()},
-                    {__.outE().inV().outE().inV().outE().inV().groupCount(), __.outE().inV().outE().inV().barrier(size).outE().inV().barrier(size).groupCount()},
-                    {__.out().out().has("age", 32).out().count(), __.out().out().barrier(size).has("age", 32).out().barrier(size).count()},
-            });
-        }
+    @Test
+    public void doTest() {
+        applyAdjacentToIncidentStrategy(original);
+        assertEquals(optimized, original);
     }
 
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+        final int size = LazyBarrierStrategy.MAX_BARRIER_SIZE;
+        return Arrays.asList(new Traversal[][]{
+                {__.out().count(), __.out().count()},
+                {__.out().out().count(), __.out().out().count()},
+                {__.out().out().out().count(), __.out().out().barrier(size).out().barrier(size).count()},
+                {__.outE().inV().outE().inV().outE().inV().groupCount(), __.outE().inV().outE().inV().barrier(size).outE().inV().barrier(size).groupCount()},
+                {__.out().out().has("age", 32).out().count(), __.out().out().barrier(size).has("age", 32).out().barrier(size).count()},
+        });
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
index cb3051a..f2668fd 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
@@ -19,116 +19,61 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class AdjacentToIncidentStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractAdjacentToIncidentStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyAdjacentToIncidentStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(AdjacentToIncidentStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractAdjacentToIncidentStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyAdjacentToIncidentStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractAdjacentToIncidentStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyAdjacentToIncidentStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(AdjacentToIncidentStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyAdjacentToIncidentStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.out().count(), __.outE().count()},
-                    {__.in().count(), __.inE().count()},
-                    {__.both().count(), __.bothE().count()},
-                    {__.out("knows").count(), __.outE("knows").count()},
-                    {__.out("knows", "likes").count(), __.outE("knows", "likes").count()},
-                    {__.filter(__.out()), __.filter(__.outE())},
-                    {__.where(__.not(__.out())), __.where(__.not(__.outE()))},
-                    {__.where(__.out("knows")), __.where(__.outE("knows"))},
-                    {__.values().count(), __.properties().count()},
-                    {__.values("name").count(), __.properties("name").count()},
-                    {__.where(__.values()), __.where(__.properties())},
-                    {__.and(__.out(), __.in()), __.and(__.outE(), __.inE())},
-                    {__.or(__.out(), __.in()), __.or(__.outE(), __.inE())},
-                    {__.out().as("a").count(),__.outE().count()},   // TODO: is this good?
-                    {__.where(__.as("a").out("knows").as("b")), __.where(__.as("a").out("knows").as("b"))}});
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        return Arrays.asList(new Traversal[][]{
+                {__.out().count(), __.outE().count()},
+                {__.in().count(), __.inE().count()},
+                {__.both().count(), __.bothE().count()},
+                {__.out("knows").count(), __.outE("knows").count()},
+                {__.out("knows", "likes").count(), __.outE("knows", "likes").count()},
+                {__.filter(__.out()), __.filter(__.outE())},
+                {__.where(__.not(__.out())), __.where(__.not(__.outE()))},
+                {__.where(__.out("knows")), __.where(__.outE("knows"))},
+                {__.values().count(), __.properties().count()},
+                {__.values("name").count(), __.properties("name").count()},
+                {__.where(__.values()), __.where(__.properties())},
+                {__.and(__.out(), __.in()), __.and(__.outE(), __.inE())},
+                {__.or(__.out(), __.in()), __.or(__.outE(), __.inE())},
+                {__.out().as("a").count(), __.outE().count()},   // TODO: is this good?
+                {__.where(__.as("a").out("knows").as("b")), __.where(__.as("a").out("knows").as("b"))}});
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
index 9be49a3..2a57185 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
@@ -19,112 +19,63 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class FilterRankingStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractDedupBijectionStrategyTest {
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    public static Iterable<Object[]> data() {
+        return generateTestParameters();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractDedupBijectionStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyFilterRankingStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    private static abstract class AbstractDedupBijectionStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyDedupBijectionStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyDedupBijectionStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
+    @Test
+    public void doTest() {
+        applyFilterRankingStrategy(original);
+        assertEquals(optimized, original);
+    }
 
-            return Arrays.asList(new Traversal[][]{
-                    {__.dedup().order(), __.dedup().order()},
-                    {__.order().dedup(), __.dedup().order()},
-                    {__.identity().order().dedup(), __.dedup().order()},
-                    {__.order().identity().dedup(), __.dedup().order()},
-                    {__.order().out().dedup(), __.order().out().dedup()},
-                    {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
-            });
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        return Arrays.asList(new Traversal[][]{
+                {__.dedup().order(), __.dedup().order()},
+                {__.order().dedup(), __.dedup().order()},
+                {__.identity().order().dedup(), __.dedup().order()},
+                {__.order().identity().dedup(), __.dedup().order()},
+                {__.order().out().dedup(), __.order().out().dedup()},
+                {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
+                {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
+                {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
+                {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
+        });
     }
 }
 
+

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
index e7d76d9..fd1ec2b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
@@ -19,110 +19,55 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class IdentityRemovalStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractIdentityRemovalStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
+    void applyIdentityRemovalStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(IdentityRemovalStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
 
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractIdentityRemovalStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyIdentityRemovalStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractIdentityRemovalStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyMatchWhereStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(IdentityRemovalStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyMatchWhereStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.identity(), __.identity()},
-                    {__.identity().out(), __.out()},
-                    {__.identity().out().identity(), __.out()},
-                    {__.identity().as("a").out().identity(), __.identity().as("a").out()},
-                    {__.identity().as("a").out().identity().as("b"), __.identity().as("a").out().as("b")},
-                    {__.identity().as("a").out().in().identity().identity().as("b").identity().out(), __.identity().as("a").out().in().as("b").out()},
-                    {__.out().identity().as("a").out().in().identity().identity().as("b").identity().out(), __.out().as("a").out().in().as("b").out()},
-            });
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        return Arrays.asList(new Traversal[][]{
+                {__.identity(), __.identity()},
+                {__.identity().out(), __.out()},
+                {__.identity().out().identity(), __.out()},
+                {__.identity().as("a").out().identity(), __.identity().as("a").out()},
+                {__.identity().as("a").out().identity().as("b"), __.identity().as("a").out().as("b")},
+                {__.identity().as("a").out().in().identity().identity().as("b").identity().out(), __.identity().as("a").out().in().as("b").out()},
+                {__.out().identity().as("a").out().in().identity().identity().as("b").identity().out(), __.out().as("a").out().in().as("b").out()},
+        });
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
index 45f583e..7139f7b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
@@ -19,15 +19,12 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
@@ -35,103 +32,51 @@ import java.util.Arrays;
 import java.util.function.Function;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class IncidentToAdjacentStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractIncidentToAdjacentStrategyTest {
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyIncidentToAdjacentStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(IncidentToAdjacentStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractIncidentToAdjacentStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyIncidentToAdjacentStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractIncidentToAdjacentStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyIncidentToAdjacentStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(IncidentToAdjacentStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyIncidentToAdjacentStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            Function<Traverser<Vertex>, Vertex> lambda = Traverser::get; // to ensure same hashCode
-            return Arrays.asList(new Traversal[][]{
-                    {__.outE().inV(), __.out()},
-                    {__.inE().outV(), __.in()},
-                    {__.bothE().otherV(), __.both()},
-                    {__.outE().outV(), __.outE().outV()},
-                    {__.inE().inV(), __.inE().inV()},
-                    {__.bothE().bothV(), __.bothE().bothV()},
-                    {__.bothE().inV(), __.bothE().inV()},
-                    {__.bothE().outV(), __.bothE().outV()},
-                    {__.outE().as("a").inV(), __.outE().as("a").inV()}, // todo: this can be optimized, but requires a lot more checks
-                    {__.outE().inV().path(), __.outE().inV().path()},
-                    {__.outE().inV().map(lambda), __.outE().inV().map(lambda)},
-                    {__.union(__.outE().inV(), __.inE().outV()).path(), __.union(__.outE().inV(), __.inE().outV()).path()},
-                    {__.as("a").outE().inV().as("b"), __.as("a").out().as("b")}});
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        Function<Traverser<Vertex>, Vertex> lambda = Traverser::get; // to ensure same hashCode
+        return Arrays.asList(new Traversal[][]{
+                {__.outE().inV(), __.out()},
+                {__.inE().outV(), __.in()},
+                {__.bothE().otherV(), __.both()},
+                {__.outE().outV(), __.outE().outV()},
+                {__.inE().inV(), __.inE().inV()},
+                {__.bothE().bothV(), __.bothE().bothV()},
+                {__.bothE().inV(), __.bothE().inV()},
+                {__.bothE().outV(), __.bothE().outV()},
+                {__.outE().as("a").inV(), __.outE().as("a").inV()}, // todo: this can be optimized, but requires a lot more checks
+                {__.outE().inV().path(), __.outE().inV().path()},
+                {__.outE().inV().map(lambda), __.outE().inV().map(lambda)},
+                {__.union(__.outE().inV(), __.inE().outV()).path(), __.union(__.outE().inV(), __.inE().outV()).path()},
+                {__.as("a").outE().inV().as("b"), __.as("a").out().as("b")}});
     }
 }
+

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5f2cd677/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
index a51d8d9..41d3525 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
@@ -103,7 +103,7 @@ public class MatchPredicateStrategyTest {
             final TraversalStrategies strategies = new DefaultTraversalStrategies();
             strategies.addStrategies(MatchPredicateStrategy.instance(), IdentityRemovalStrategy.instance());
             traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
+            //traversal.asAdmin().setEngine(this.traversalEngine);
             traversal.asAdmin().applyStrategies();
         }