Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1278 38b010073 -> 5a778181c
Refactored RemoteStep and RemoteStrategy. RemoteStep no longer needs a "remote traversal" and the ScriptTraversal approach is no longer necessary now that we have Bytecode. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5a778181 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5a778181 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5a778181 Branch: refs/heads/TINKERPOP-1278 Commit: 5a778181cec9e04ad32723fd412b4de2c84db756 Parents: 38b0100 Author: Stephen Mallette <[email protected]> Authored: Wed Jul 20 13:01:35 2016 -0400 Committer: Stephen Mallette <[email protected]> Committed: Wed Jul 20 13:01:35 2016 -0400 ---------------------------------------------------------------------- .../remote/traversal/step/map/RemoteStep.java | 13 +------------ .../strategy/decoration/RemoteStrategy.java | 16 ++-------------- 2 files changed, 3 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5a778181/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java index ee28a06..651c11e 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java @@ -20,12 +20,9 @@ package org.apache.tinkerpop.gremlin.process.remote.traversal.step.map; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException; -import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy; -import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep; -import org.apache.tinkerpop.gremlin.process.traversal.strategy.creation.TranslationStrategy; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; import java.util.Iterator; @@ -40,15 +37,12 @@ import java.util.NoSuchElementException; public final class RemoteStep<S, E> extends AbstractStep<S, E> { private transient RemoteConnection remoteConnection; - private Traversal.Admin<S, E> remoteTraversal; private Iterator<Traverser.Admin<E>> remoteIterator; @SuppressWarnings("unchecked") - public RemoteStep(final Traversal.Admin traversal, final Traversal<S, E> remoteTraversal, - final RemoteConnection remoteConnection) { + public RemoteStep(final Traversal.Admin traversal, final RemoteConnection remoteConnection) { super(traversal); this.remoteConnection = remoteConnection; - this.remoteTraversal = remoteTraversal.asAdmin(); } @Override @@ -70,9 +64,4 @@ public final class RemoteStep<S, E> extends AbstractStep<S, E> { return this.remoteIterator.next(); } - - @Override - public int hashCode() { - return super.hashCode() ^ this.remoteTraversal.hashCode(); - } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5a778181/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java index 4a0799f..4c9e828 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java @@ -86,21 +86,9 @@ public final class RemoteStrategy extends AbstractTraversalStrategy<TraversalStr if (null == remoteGraph.getConnection()) throw new IllegalStateException("RemoteStrategy expects the RemoteGraph instance to have a RemoteConnection"); - final Traversal.Admin<?, ?> remoteTraversal; - if (traversal.getStrategies().getStrategy(TranslationStrategy.class).isPresent()) { - // if there is a translator, send the translation over the wire (TODO: don't use ScriptTraversal -- RemoteConnection.submit(alias, scriptEngine, script, bindings) - remoteTraversal = new ScriptTraversal<>(traversal, traversal.getStrategies().getStrategy(TranslationStrategy.class).get()); - TraversalHelper.removeAllSteps(traversal); - } else { - // if there is no translator, send the current traversal over the wire - remoteTraversal = new DefaultTraversal<>(); - TraversalHelper.removeToTraversal(traversal.getStartStep(), EmptyStep.instance(), (Traversal.Admin) remoteTraversal); - } - // remove remote and translation strategies to avoid infinite loops - remoteTraversal.setStrategies(traversal.getStrategies().clone().removeStrategies(RemoteStrategy.class, TranslationStrategy.class)); - remoteTraversal.setSideEffects(traversal.getSideEffects()); // remote step wraps the traversal and emits the results from the remote connection - final RemoteStep<?, ?> remoteStep = new RemoteStep<>(traversal, remoteTraversal, remoteGraph.getConnection()); + final RemoteStep<?, ?> remoteStep = new RemoteStep<>(traversal.clone(), remoteGraph.getConnection()); + TraversalHelper.removeAllSteps(traversal); traversal.addStep(remoteStep); // validations
