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/13 16:35:00 UTC

[06/17] incubator-tinkerpop git commit: Stubbed PageRankVertexProgramStep. Cleaned up and optimized a few tid bits here and there. Its going to get nasty tomorrow.

Stubbed PageRankVertexProgramStep. Cleaned up and optimized a few tid bits here and there. Its going to get nasty tomorrow.


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

Branch: refs/heads/master
Commit: 3afc1894a4805e82ad076535697add3baac91c6c
Parents: 080863a
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Feb 10 18:41:07 2016 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Feb 10 18:41:07 2016 -0700

----------------------------------------------------------------------
 .../traversal/TraversalVertexProgram.java       |  1 -
 .../traversal/step/VertexComputing.java         | 33 +++++++
 .../traversal/step/map/ComputerResultStep.java  |  2 +-
 .../step/map/PageRankVertexProgramStep.java     | 97 ++++++++++++++++++++
 .../step/map/TraversalVertexProgramStep.java    | 10 +-
 .../gremlin/process/traversal/Traversal.java    |  2 -
 .../process/traversal/TraversalSource.java      |  7 +-
 .../process/traversal/TraversalStrategies.java  |  2 -
 .../dsl/graph/GraphTraversalSource.java         |  4 +-
 .../decoration/RequirementsStrategy.java        |  3 +-
 .../decoration/VertexProgramStrategy.java       | 82 +++++++++++++++++
 .../TraversalVertexProgramStrategy.java         | 76 ---------------
 .../traversal/util/DefaultTraversal.java        |  2 -
 .../util/DefaultTraversalStrategies.java        |  1 -
 .../process/traversal/util/TraversalHelper.java |  6 +-
 .../gremlin/structure/util/StringFactory.java   |  4 +-
 .../ComputerVerificationStrategyTest.java       |  2 +-
 .../apache/tinkerpop/gremlin/GraphProvider.java | 12 ++-
 .../groovy/plugin/HadoopRemoteAcceptor.java     |  4 +-
 .../process/TinkerGraphNoStrategyProvider.java  |  1 -
 20 files changed, 240 insertions(+), 111 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index fb3ff1e..cabbf6c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -120,7 +120,6 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
         this.traversalMatrix = new TraversalMatrix<>(this.traversal);
         for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
             this.mapReducers.add(mapReducer.getMapReduce());
-
         }
         if (!(this.traversal.getEndStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep() instanceof ReducingBarrierStep))
             this.mapReducers.add(new TraverserMapReduce(this.traversal));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java
new file mode 100644
index 0000000..0cf144f
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.computer.traversal.step;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public interface VertexComputing {
+
+    public void setGraphComputerFunction(final Function<Graph, GraphComputer> graphComputerFunction);
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
index 323f9d8..fc63524 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ComputerResultStep.java
@@ -74,7 +74,7 @@ public final class ComputerResultStep<S> extends AbstractStep<ComputerResult, S>
                 final ComputerResult result = this.starts.next().get();
                 result.memory().keys().forEach(key -> this.getTraversal().getSideEffects().set(key, result.memory().get(key)));
                 final Step endStep = this.getPreviousStep() instanceof TraversalVertexProgramStep ?
-                        ((TraversalVertexProgramStep<?>) this.getPreviousStep()).computerTraversal.getEndStep() :
+                        ((TraversalVertexProgramStep) this.getPreviousStep()).computerTraversal.getEndStep() :
                         EmptyStep.instance();
                 if (endStep instanceof SideEffectCapStep) {
                     final List<String> sideEffectKeys = ((SideEffectCapStep<?, ?>) endStep).getSideEffectKeys();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
new file mode 100644
index 0000000..6743ee5
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
@@ -0,0 +1,97 @@
+/*
+ * 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.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.VertexComputing;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.concurrent.ExecutionException;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PageRankVertexProgramStep extends AbstractStep<ComputerResult, ComputerResult> implements VertexComputing, TraversalParent {
+
+    private transient Function<Graph, GraphComputer> graphComputerFunction = Graph::compute;
+
+    private Traversal.Admin<Vertex, Edge> pageRankTraversal = __.<Vertex>outE().asAdmin();  // need to compile against the ComputerResult.graph()
+    private boolean first = true;
+
+
+    public PageRankVertexProgramStep(final Traversal.Admin traversal) {
+        super(traversal);
+    }
+
+    @Override
+    protected Traverser<ComputerResult> processNextStart() throws NoSuchElementException {
+        try {
+            if (this.first && this.getPreviousStep() instanceof EmptyStep) {
+                this.first = false;
+                final Graph graph = this.getTraversal().getGraph().get();
+                final GraphComputer graphComputer = this.graphComputerFunction.apply(graph).persist(GraphComputer.Persist.EDGES);
+                return this.traversal.getTraverserGenerator().generate(graphComputer.program(PageRankVertexProgram.build().traversal(this.pageRankTraversal).create(graph)).submit().get(), this, 1l);
+            } else {
+                final Traverser.Admin<ComputerResult> traverser = this.starts.next();
+                final Graph graph = traverser.get().graph();
+                final GraphComputer graphComputer = this.graphComputerFunction.apply(graph).persist(GraphComputer.Persist.EDGES);
+                return traverser.split(graphComputer.program(PageRankVertexProgram.build().traversal(this.pageRankTraversal).create(graph)).submit().get(), this);
+            }
+        } catch (final InterruptedException | ExecutionException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public void addLocalChild(final Traversal.Admin<?, ?> localChildTraversal) {
+        this.pageRankTraversal = this.integrateChild((Traversal.Admin) localChildTraversal);
+    }
+
+    @Override
+    public List<Traversal.Admin<Vertex, Edge>> getLocalChildren() {
+        return Collections.singletonList(this.pageRankTraversal);
+    }
+
+    @Override
+    public void setGraphComputerFunction(final Function<Graph, GraphComputer> graphComputerFunction) {
+        this.graphComputerFunction = graphComputerFunction;
+    }
+
+    @Override
+    public PageRankVertexProgramStep clone() {
+        final PageRankVertexProgramStep clone = (PageRankVertexProgramStep) super.clone();
+        clone.pageRankTraversal = clone.integrateChild(this.pageRankTraversal);
+        return clone;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
index f9eb461..120cda9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
@@ -38,13 +38,13 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class TraversalVertexProgramStep<S> extends AbstractStep<S, ComputerResult> implements TraversalParent {
+public final class TraversalVertexProgramStep extends AbstractStep<ComputerResult, ComputerResult> implements TraversalParent {
 
-    public Traversal.Admin<S, ?> computerTraversal;
+    public Traversal.Admin<?, ?> computerTraversal;
     private final transient GraphComputer graphComputer;
     private boolean first = true;
 
-    public TraversalVertexProgramStep(final Traversal.Admin traversal, final Traversal.Admin<S, ?> computerTraversal, final GraphComputer graphComputer) {
+    public TraversalVertexProgramStep(final Traversal.Admin traversal, final Traversal.Admin<?, ?> computerTraversal, final GraphComputer graphComputer) {
         super(traversal);
         this.graphComputer = graphComputer;
         this.computerTraversal = this.integrateChild(computerTraversal);
@@ -75,8 +75,8 @@ public final class TraversalVertexProgramStep<S> extends AbstractStep<S, Compute
     }
 
     @Override
-    public TraversalVertexProgramStep<S> clone() {
-        final TraversalVertexProgramStep<S> clone = (TraversalVertexProgramStep<S>) super.clone();
+    public TraversalVertexProgramStep clone() {
+        final TraversalVertexProgramStep clone = (TraversalVertexProgramStep) super.clone();
         clone.computerTraversal = this.integrateChild(this.computerTraversal.clone());
         return clone;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
index 66c3728..8b598a6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
@@ -365,8 +365,6 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable {
                 requirements.add(TraverserRequirement.SIDE_EFFECTS);
             if (null != this.getSideEffects().getSackInitialValue())
                 requirements.add(TraverserRequirement.SACK);
-            if (TraversalHelper.onGraphComputer(this))
-                requirements.add(TraverserRequirement.BULK);
             if (requirements.contains(TraverserRequirement.ONE_BULK))
                 requirements.remove(TraverserRequirement.BULK);
             return requirements;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/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 08badfa..8d8470c 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
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal;
 
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
@@ -62,7 +63,7 @@ public interface TraversalSource extends Cloneable {
 
     /**
      * Add a {@link Function} that will generate a {@link GraphComputer} from the {@link Graph} that will be used to execute the traversal.
-     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy} to the strategies.
+     * This adds a {@link VertexProgramStrategy} to the strategies.
      *
      * @param graphComputerFunction a function to generate a graph computer from the graph
      * @return a new traversal source with updated strategies
@@ -71,7 +72,7 @@ public interface TraversalSource extends Cloneable {
 
     /**
      * Add a {@link GraphComputer} class used to execute the traversal.
-     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy} to the strategies.
+     * This adds a {@link VertexProgramStrategy} to the strategies.
      *
      * @param graphComputerClass the graph computer class
      * @return a new traversal source with updated strategies
@@ -82,7 +83,7 @@ public interface TraversalSource extends Cloneable {
 
     /**
      * Add the standard {@link GraphComputer} of the graph that will be used to execute the traversal.
-     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy} to the strategies.
+     * This adds a {@link VertexProgramStrategy} to the strategies.
      *
      * @return a new traversal source with updated strategies
      */

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/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 c8eb617..274b7a6 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
@@ -20,14 +20,12 @@ package org.apache.tinkerpop.gremlin.process.traversal;
 
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.AdjacentToIncidentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.MatchPredicateStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RangeByIsCountStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.StandardVerificationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/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 97c3f19..e0aa13c 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
@@ -30,7 +30,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy;
 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.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -99,7 +99,7 @@ public class GraphTraversalSource implements TraversalSource {
     @Override
     public GraphTraversalSource withComputer(final Function<Graph, GraphComputer> graphComputerFunction) {
         final GraphTraversalSource clone = this.clone();
-        clone.strategies.addStrategies(new TraversalVertexProgramStrategy(graphComputerFunction), ComputerVerificationStrategy.instance());
+        clone.strategies.addStrategies(new VertexProgramStrategy(graphComputerFunction), ComputerVerificationStrategy.instance());
         return clone;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
index efb28bf..ac46ae3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
@@ -25,7 +25,6 @@ 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.step.util.RequirementsStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 
 import java.util.Collections;
@@ -60,6 +59,6 @@ public final class RequirementsStrategy extends AbstractTraversalStrategy<Traver
     }
 
     public Set<Class<? extends DecorationStrategy>> applyPost() {
-        return Collections.singleton(TraversalVertexProgramStrategy.class);
+        return Collections.singleton(VertexProgramStrategy.class);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategy.java
new file mode 100644
index 0000000..9a2908c
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategy.java
@@ -0,0 +1,82 @@
+/*
+ * 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.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+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.map.GraphStep;
+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.verification.ComputerVerificationStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.util.Optional;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class VertexProgramStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private transient Function<Graph, GraphComputer> graphComputerFunction;
+
+    private VertexProgramStrategy() {
+
+    }
+
+    public VertexProgramStrategy(final Function<Graph, GraphComputer> graphComputerFunction) {
+        this.graphComputerFunction = graphComputerFunction;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        traversal.addTraverserRequirement(TraverserRequirement.BULK); // all graph computations require bulk
+        if (traversal.getParent() instanceof EmptyStep) {  // VertexPrograms can only execute at the root level of a Traversal
+            if (traversal.getStartStep() instanceof GraphStep && traversal.getStartStep().getNextStep() instanceof PageRankVertexProgramStep) {
+                traversal.removeStep(0);
+                TraversalHelper.insertAfterStep(new ComputerResultStep<>(traversal, true), (PageRankVertexProgramStep) traversal.getStartStep().getNextStep(), traversal);
+            }
+            if (null != this.graphComputerFunction) {   // if the function is null, then its been serialized and thus, already in a graph computer
+                Traversal.Admin<?, ?> newTraversal = new DefaultTraversal<>();
+                TraversalHelper.removeToTraversal(traversal.getStartStep(), EmptyStep.instance(), (Traversal.Admin) newTraversal);
+                traversal.addStep(new TraversalVertexProgramStep(traversal, newTraversal, this.graphComputerFunction.apply(traversal.getGraph().get())));
+                traversal.addStep(new ComputerResultStep<>(traversal, true));
+            } else {  // this is a total hack to trick the difference between TraversalVertexProgram via GraphComputer and via TraversalSource. :|
+                traversal.setParent(new TraversalVertexProgramStep(EmptyTraversal.instance(), EmptyTraversal.instance(), null));
+                ComputerVerificationStrategy.instance().apply(traversal);
+                traversal.setParent(EmptyStep.instance());
+            }
+        }
+    }
+
+    public static Optional<GraphComputer> getGraphComputer(final Graph graph, final TraversalStrategies strategies) {
+        final Optional<TraversalStrategy<?>> optional = strategies.toList().stream().filter(strategy -> strategy instanceof VertexProgramStrategy).findAny();
+        return optional.isPresent() ? Optional.of(((VertexProgramStrategy) optional.get()).graphComputerFunction.apply(graph)) : Optional.empty();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/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
deleted file mode 100644
index 29da95e..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/TraversalVertexProgramStrategy.java
+++ /dev/null
@@ -1,76 +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.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
-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.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
-import java.util.Optional;
-import java.util.function.Function;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraversalVertexProgramStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
-
-    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) {
-            if (null != this.graphComputerFunction) {   // if the function is null, then its been serialized and thus, already in a graph computer
-                Traversal.Admin<?, ?> newTraversal = new DefaultTraversal<>();
-                TraversalHelper.removeToTraversal(traversal.getStartStep(), EmptyStep.instance(), (Traversal.Admin) newTraversal);
-                traversal.addStep(new TraversalVertexProgramStep<>(traversal, newTraversal, this.graphComputerFunction.apply(traversal.getGraph().get())));
-                traversal.addStep(new ComputerResultStep<>(traversal, true));
-            } else {  // this is a total hack to trick the difference between TraversalVertexProgram via GraphComputer and via TraversalSource. :|
-                traversal.setParent(new TraversalVertexProgramStep<>(EmptyTraversal.instance(),EmptyTraversal.instance(),null));
-                ComputerVerificationStrategy.instance().apply(traversal);
-                traversal.setParent(EmptyStep.instance());
-                traversal.addTraverserRequirement(TraverserRequirement.BULK);
-            }
-        }
-    }
-
-    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/3afc1894/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 d783f43..cbbac7e 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
@@ -109,8 +109,6 @@ 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 (TraversalHelper.onGraphComputer(this))
-            requirements.add(TraverserRequirement.BULK);
         if (requirements.contains(TraverserRequirement.ONE_BULK))
             requirements.remove(TraverserRequirement.BULK);
         return requirements;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
index 474e205..7eae1ea 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.util;
 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.strategy.finalization.TraversalVertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.DefaultTraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index f35496a..cf8395a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -118,7 +118,7 @@ public final class TraversalHelper {
      * Insert a step before a specified step instance.
      *
      * @param insertStep the step to insert
-     * @param afterStep  the step to insert the new step after
+     * @param afterStep  the step to insert the new step before
      * @param traversal  the traversal on which the action should occur
      */
     public static <S, E> void insertBeforeStep(final Step<S, E> insertStep, final Step<E, ?> afterStep, final Traversal.Admin<?, ?> traversal) {
@@ -469,9 +469,7 @@ public final class TraversalHelper {
     }
 
     public static boolean onGraphComputer(Traversal.Admin<?, ?> traversal) {
-        if (traversal.getParent().asStep() instanceof TraversalVertexProgramStep)
-            return true;
-        while (!((traversal.getParent()) instanceof EmptyStep)) {
+        while (!(traversal.getParent() instanceof EmptyStep)) {
             if (traversal.getParent().asStep() instanceof TraversalVertexProgramStep)
                 return true;
             traversal = traversal.getParent().asStep().getTraversal();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/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 87ec589..9d39d69 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
@@ -29,7 +29,7 @@ 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.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -139,7 +139,7 @@ public final class StringFactory {
 
     public static String traversalSourceString(final TraversalSource traversalSource) {
         final String graphString = traversalSource.getGraph().toString();
-        final Optional<GraphComputer> optional = TraversalVertexProgramStrategy.getGraphComputer(traversalSource.getGraph(), traversalSource.getStrategies());
+        final Optional<GraphComputer> optional = VertexProgramStrategy.getGraphComputer(traversalSource.getGraph(), traversalSource.getStrategies());
         return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + (optional.isPresent() ? optional.get().toString() : "standard") + R_BRACKET;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
index 61abfd4..8c90542 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
@@ -60,7 +60,7 @@ public class ComputerVerificationStrategyTest {
         try {
             final TraversalStrategies strategies = new DefaultTraversalStrategies();
             strategies.addStrategies(ComputerVerificationStrategy.instance());
-            traversal.asAdmin().setParent(new TraversalVertexProgramStep<>(EmptyTraversal.instance(), EmptyTraversal.instance(), null)); // trick it
+            traversal.asAdmin().setParent(new TraversalVertexProgramStep(EmptyTraversal.instance(), EmptyTraversal.instance(), null)); // trick it
             traversal.asAdmin().setStrategies(strategies);
             traversal.asAdmin().applyStrategies();
             fail("The strategy should not allow traversal: " + this.traversal);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
index f1a0172..57e40d4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
@@ -85,8 +85,7 @@ public interface GraphProvider {
     /**
      * Create a {@link GraphTraversalSource} from a {@link Graph} instance.  The default implementation does not
      * use {@link GraphComputer} so vendors should override as necessary if their implementation is testing
-     * something that requires a different engine type, like those tests for
-     * {@link org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type}.
+     * something that requires a different engine type, like {@link GraphComputer}.
      */
     public default GraphTraversalSource traversal(final Graph graph) {
         return graph.traversal();
@@ -95,8 +94,7 @@ public interface GraphProvider {
     /**
      * Create a {@link GraphTraversalSource} from a {@link Graph} instance.  The default implementation does not use
      * {@link GraphComputer} so vendors should override as necessary if their implementation is testing
-     * something that requires a different engine type, like those tests for
-     * {@link org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type}.
+     * something that requires a different engine type, like {@link GraphComputer}.
      * <p/>
      * Implementations should apply strategies as necessary to the
      * {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource} before calling
@@ -106,6 +104,12 @@ public interface GraphProvider {
         return this.traversal(graph).withStrategies(strategies);
     }
 
+    /**
+     * Create a {@link GraphComputer} from the {@link Graph} instance. The default implementation simply calls {@code graph.compute()}.
+     *
+     * @param graph the graph to get the graph computer from
+     * @return a new graph computer
+     */
     public default GraphComputer getGraphComputer(final Graph graph) {
         return graph.compute();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
index fdcf1df..aa1c69e 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
@@ -28,7 +28,7 @@ import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.Computer
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
 import org.codehaus.groovy.tools.shell.Groovysh;
 
@@ -96,7 +96,7 @@ public final class HadoopRemoteAcceptor implements RemoteAcceptor {
             if (this.useSugar)
                 script = SugarLoader.class.getCanonicalName() + ".load()\n" + script;
             final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.traversalSource, "gremlin-groovy", script).create(this.hadoopGraph);
-            final ComputerResult computerResult = TraversalVertexProgramStrategy.getGraphComputer(this.hadoopGraph, this.traversalSource.getStrategies()).get().program(program).submit().get();
+            final ComputerResult computerResult = VertexProgramStrategy.getGraphComputer(this.hadoopGraph, this.traversalSource.getStrategies()).get().program(program).submit().get();
             this.shell.getInterp().getContext().setVariable(RESULT, computerResult);
             ///
             final Traversal.Admin<ComputerResult, ?> traversal = new DefaultTraversal<>(computerResult.graph());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3afc1894/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
index 3da5181..7d18463 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
@@ -25,7 +25,6 @@ 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.strategy.decoration.ConnectiveStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.TraversalVertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;