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/03/17 14:51:53 UTC
[2/4] incubator-tinkerpop git commit: I've redesigned how
TraverserRequirements are accessed. This GREATLY reduces the amount of logic
required for all by()-modulators, StartSteps, GraphSteps,
and barriers. I'm talking CRAZY more efficient when by()-modu
I've redesigned how TraverserRequirements are accessed. This GREATLY reduces the amount of logic required for all by()-modulators, StartSteps, GraphSteps, and barriers. I'm talking CRAZY more efficient when by()-modulators are used. I've made it so the Step API works with Traverser.Admin. We had too many .asAdmins() everywhere and typecasting everywhere -- no bueno. So much more clean now. For providers of Steps, breaking -- but its simply just changing your processNextStart() signature to return a Traverser.Admin. The amount of logic removed in this push is insane. This covers TINKERPOP-1206 and partially TINKERPOP-1014. The model I used for getTraverserGenerator() is really smart and we might want to use it for getSideEffects() and getStrategies(). In short, lazy computation of these data structures as they are rarely globally needed. This also means we can pretty signifanctly reduce the size of a Traversal serialization which is good for RemoteGraph. Finally found a major bug in G
ryoMapper -- registered XXXGeneartor, not XXX (for one species). Sucky.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/5b4009d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/5b4009d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/5b4009d6
Branch: refs/heads/master
Commit: 5b4009d6418e818066d72c474123df1fbc081478
Parents: c4690b2
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Mar 15 20:49:55 2016 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Mar 15 20:49:55 2016 -0600
----------------------------------------------------------------------
.../process/computer/GiraphMessenger.java | 6 +--
.../traversal/TraversalVertexProgram.java | 38 +++++++-------
.../computer/traversal/TraverserExecutor.java | 22 ++++-----
.../traversal/step/map/ComputerResultStep.java | 2 +-
.../traversal/step/map/VertexProgramStep.java | 2 +-
.../gremlin/process/traversal/Step.java | 2 +-
.../gremlin/process/traversal/Traversal.java | 26 +---------
.../process/traversal/TraversalStrategies.java | 12 -----
.../lambda/AbstractLambdaTraversal.java | 9 +---
.../traversal/step/branch/BranchStep.java | 6 +--
.../traversal/step/branch/LocalStep.java | 2 +-
.../traversal/step/branch/RepeatStep.java | 8 +--
.../process/traversal/step/filter/AndStep.java | 2 +-
.../traversal/step/filter/FilterStep.java | 2 +-
.../process/traversal/step/filter/OrStep.java | 2 +-
.../traversal/step/filter/RangeGlobalStep.java | 4 +-
.../traversal/step/filter/SampleGlobalStep.java | 8 +--
.../traversal/step/filter/TailGlobalStep.java | 4 +-
.../traversal/step/map/AddVertexStartStep.java | 2 +-
.../traversal/step/map/CoalesceStep.java | 2 +-
.../process/traversal/step/map/FlatMapStep.java | 2 +-
.../process/traversal/step/map/GraphStep.java | 2 +-
.../process/traversal/step/map/GroupStep.java | 2 +-
.../process/traversal/step/map/HasNextStep.java | 4 +-
.../process/traversal/step/map/MapStep.java | 2 +-
.../process/traversal/step/map/MatchStep.java | 12 ++---
.../traversal/step/map/NoOpBarrierStep.java | 2 +-
.../traversal/step/map/ProfileMarkerStep.java | 2 +-
.../step/sideEffect/AggregateStep.java | 2 +-
.../sideEffect/GroupCountSideEffectStep.java | 2 +-
.../step/sideEffect/GroupSideEffectStep.java | 2 +-
.../traversal/step/sideEffect/IdentityStep.java | 2 +-
.../step/sideEffect/ProfileSideEffectStep.java | 8 +--
.../step/sideEffect/SideEffectStep.java | 2 +-
.../traversal/step/sideEffect/StartStep.java | 2 +-
.../traversal/step/sideEffect/StoreStep.java | 2 +-
.../traversal/step/util/AbstractStep.java | 6 +--
.../step/util/CollectingBarrierStep.java | 2 +-
.../traversal/step/util/ComputerAwareStep.java | 10 ++--
.../process/traversal/step/util/EmptyStep.java | 2 +-
.../step/util/ExpandableStepIterator.java | 15 ++----
.../step/util/ReducingBarrierStep.java | 8 ++-
.../traversal/step/util/RequirementsStep.java | 2 +-
.../step/util/SupplyingBarrierStep.java | 11 +++--
.../decoration/VertexProgramStrategy.java | 2 -
.../traversal/traverser/O_Traverser.java | 2 +-
.../traverser/O_TraverserGenerator.java | 52 --------------------
.../traverser/TraverserGeneratorFactory.java | 7 ++-
.../traverser/TraverserRequirement.java | 2 -
.../util/DefaultTraverserGeneratorFactory.java | 8 +--
.../traversal/util/DefaultTraversal.java | 50 +++++++++++--------
.../util/DefaultTraversalStrategies.java | 13 -----
.../process/traversal/util/EmptyTraversal.java | 5 --
.../util/EmptyTraversalStrategies.java | 10 ----
.../gremlin/structure/io/gryo/GryoMapper.java | 4 +-
.../DefaultTraverserGeneratorFactoryTest.java | 3 +-
.../spark/process/computer/SparkMessenger.java | 6 +--
57 files changed, 151 insertions(+), 280 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
----------------------------------------------------------------------
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
index f5855cb..03818b2 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
@@ -55,7 +55,7 @@ public final class GiraphMessenger<M> implements Messenger<M> {
public void sendMessage(final MessageScope messageScope, final M message) {
if (messageScope instanceof MessageScope.Local) {
final MessageScope.Local<M> localMessageScope = (MessageScope.Local) messageScope;
- final Traversal.Admin<Vertex, Edge> incidentTraversal = GiraphMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get(), this.giraphVertex.getValue().get());
+ final Traversal.Admin<Vertex, Edge> incidentTraversal = GiraphMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), this.giraphVertex.getValue().get());
final Direction direction = GiraphMessenger.getOppositeDirection(incidentTraversal);
incidentTraversal.forEachRemaining(edge ->
this.giraphComputation.sendMessage(
@@ -68,8 +68,8 @@ public final class GiraphMessenger<M> implements Messenger<M> {
}
}
- private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal<Vertex, Edge> incidentTraversal, final Vertex vertex) {
- incidentTraversal.asAdmin().addStart(incidentTraversal.asAdmin().getTraverserGenerator().generate(vertex, incidentTraversal.asAdmin().getStartStep(), 1l));
+ private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal.Admin<Vertex, Edge> incidentTraversal, final Vertex vertex) {
+ incidentTraversal.asAdmin().addStart(incidentTraversal.getTraverserGenerator().generate(vertex, incidentTraversal.getStartStep(), 1l));
return (T) incidentTraversal;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/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 92edf58..6fa8bae 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
@@ -206,11 +206,11 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
else
graphStep.setIteratorSupplier(() -> (Iterator) IteratorUtils.filter(vertex.edges(Direction.OUT), edge -> ElementHelper.idExists(edge.id(), graphStep.getIds())));
graphStep.forEachRemaining(traverser -> {
- if (traverser.asAdmin().isHalted()) {
- traverser.asAdmin().detach();
+ if (traverser.isHalted()) {
+ traverser.detach();
haltedTraversers.add((Traverser.Admin) traverser);
if (!this.keepDistributedHaltedTraversers)
- memory.add(HALTED_TRAVERSERS, new TraverserSet<>(traverser.asAdmin()));
+ memory.add(HALTED_TRAVERSERS, new TraverserSet<>(traverser));
} else
activeTraversers.add((Traverser.Admin) traverser);
});
@@ -256,7 +256,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
} else {
// finalize locally with any last traversers dangling in the local traversal
while (this.traversal.get().getEndStep().hasNext()) {
- final Traverser.Admin<Object> traverser = (Traverser.Admin) this.traversal.get().getEndStep().next().asAdmin();
+ final Traverser.Admin traverser = this.traversal.get().getEndStep().next();
traverser.detach();
haltedTraversers.add(traverser);
}
@@ -279,7 +279,7 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
final Barrier<Object> barrier = (Barrier<Object>) step;
barrier.addBarrier(memory.get(key));
while (step.hasNext()) {
- traverserSet.add(step.next().asAdmin());
+ traverserSet.add(step.next());
}
if (step instanceof ReducingBarrierStep)
memory.set(step.getId(), ((ReducingBarrierStep) step).getSeedSupplier().get());
@@ -297,26 +297,26 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
traverser.set(DetachedFactory.detach(traverser.get(), true));
traverser.setSideEffects(this.traversal.get().getSideEffects());
if (traverser.isHalted()) {
- traverser.asAdmin().detach();
+ traverser.detach();
haltedTraversers.add(traverser);
} else if (traverser.get() instanceof Attachable &&
!(traverser.get() instanceof Path) &&
!TraversalHelper.isLocalElement(this.traversalMatrix.getStepById(traverser.getStepId()))) { // this is so that patterns like order().name work as expected.
- traverser.asAdmin().detach();
+ traverser.detach();
remoteActiveTraversers.add(traverser);
} else {
currentStep = this.traversalMatrix.getStepById(traverser.getStepId());
if (!currentStep.getId().equals(previousStep.getId()) && !(previousStep instanceof EmptyStep)) {
previousStep.forEachRemaining(result -> {
- if (result.asAdmin().isHalted()) {
- result.asAdmin().detach();
- haltedTraversers.add(result.asAdmin());
+ if (result.isHalted()) {
+ result.detach();
+ haltedTraversers.add(result);
} else {
if (result.get() instanceof Attachable) {
- traverser.asAdmin().detach();
- remoteActiveTraversers.add(result.asAdmin());
+ traverser.detach();
+ remoteActiveTraversers.add(result);
} else
- localActiveTraversers.add(result.asAdmin());
+ localActiveTraversers.add(result);
}
});
}
@@ -326,15 +326,15 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
}
if (!(currentStep instanceof EmptyStep)) {
currentStep.forEachRemaining(traverser -> {
- if (traverser.asAdmin().isHalted()) {
- traverser.asAdmin().detach();
- haltedTraversers.add(traverser.asAdmin());
+ if (traverser.isHalted()) {
+ traverser.detach();
+ haltedTraversers.add(traverser);
} else {
if (traverser.get() instanceof Attachable) {
- traverser.asAdmin().detach();
- remoteActiveTraversers.add(traverser.asAdmin());
+ traverser.detach();
+ remoteActiveTraversers.add(traverser);
} else
- localActiveTraversers.add(traverser.asAdmin());
+ localActiveTraversers.add(traverser);
}
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
index d8b7479..895229a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
@@ -151,14 +151,14 @@ public final class TraverserExecutor {
while (barrier.hasNextBarrier()) {
final TraverserSet<Object> barrierSet = barrier.nextBarrier();
IteratorUtils.removeOnNext(barrierSet.iterator()).forEachRemaining(traverser -> {
- if (traverser.asAdmin().isHalted()) {
- traverser.asAdmin().detach();
- haltedTraversers.add(traverser.asAdmin());
+ if (traverser.isHalted()) {
+ traverser.detach();
+ haltedTraversers.add(traverser);
if (returnHaltedTraversers)
- memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(traverser.asAdmin().split()));
+ memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(traverser.split()));
} else {
- traverser.asAdmin().detach();
- traverserSet.add(traverser.asAdmin());
+ traverser.detach();
+ traverserSet.add(traverser);
}
});
}
@@ -172,13 +172,13 @@ public final class TraverserExecutor {
}
} else { // LOCAL PROCESSING
step.forEachRemaining(traverser -> {
- if (traverser.asAdmin().isHalted()) {
- traverser.asAdmin().detach();
- haltedTraversers.add(traverser.asAdmin());
+ if (traverser.isHalted()) {
+ traverser.detach();
+ haltedTraversers.add(traverser);
if (returnHaltedTraversers)
- memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(traverser.asAdmin().split()));
+ memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(traverser.split()));
} else {
- activeTraversers.add(traverser.asAdmin());
+ activeTraversers.add(traverser);
}
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/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 0e7cde5..b5fd8e8 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
@@ -60,7 +60,7 @@ public final class ComputerResultStep<S> extends AbstractStep<ComputerResult, S>
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
while (true) {
if (this.currentIterator.hasNext())
return this.currentIterator.next();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
index 3f12a47..50c2e30 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
@@ -46,7 +46,7 @@ public abstract class VertexProgramStep extends AbstractStep<ComputerResult, Com
}
@Override
- protected Traverser<ComputerResult> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<ComputerResult> processNextStart() throws NoSuchElementException {
try {
if (this.first && this.getPreviousStep() instanceof EmptyStep) {
this.first = false;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
index fe28b21..0636dc3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
@@ -36,7 +36,7 @@ import java.util.Set;
* @param <S> The incoming object type of the step
* @param <E> The outgoing object type of the step
*/
-public interface Step<S, E> extends Iterator<Traverser<E>>, Serializable, Cloneable {
+public interface Step<S, E> extends Iterator<Traverser.Admin<E>>, Serializable, Cloneable {
/**
* Add a iterator of {@link Traverser} objects of type S to the step.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/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 ddf0246..da67277 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
@@ -43,7 +43,6 @@ import java.util.Set;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
@@ -352,35 +351,14 @@ public interface Traversal<S, E> extends Iterator<E>, Serializable, Cloneable {
*
* @return the generator of traversers
*/
- public default TraverserGenerator getTraverserGenerator() {
- return this.getStrategies().getTraverserGeneratorFactory().getTraverserGenerator(this);
- }
+ public TraverserGenerator getTraverserGenerator();
/**
* Get the set of all {@link TraverserRequirement}s for this traversal.
*
* @return the features of a traverser that are required to execute properly in this traversal
*/
- public default Set<TraverserRequirement> getTraverserRequirements() {
- final Set<TraverserRequirement> requirements = this.getSteps().stream()
- .flatMap(step -> ((Step<?, ?>) step).getRequirements().stream())
- .collect(Collectors.toSet());
- if (this.getSideEffects().keys().size() > 0)
- requirements.add(TraverserRequirement.SIDE_EFFECTS);
- if (null != this.getSideEffects().getSackInitialValue())
- requirements.add(TraverserRequirement.SACK);
- if (requirements.contains(TraverserRequirement.ONE_BULK))
- requirements.remove(TraverserRequirement.BULK);
- return requirements;
- }
-
- /**
- * Add a {@link TraverserRequirement} to this traversal and respective nested sub-traversals.
- * This is here to allow {@link TraversalStrategy} and {@link TraversalSource} instances to insert requirements.
- *
- * @param traverserRequirement the traverser requirement to add
- */
- public void addTraverserRequirement(final TraverserRequirement traverserRequirement);
+ public Set<TraverserRequirement> getTraverserRequirements();
/**
* Call the {@link Step#reset} method on every step in the traversal.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/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 274b7a6..38a4639 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
@@ -91,18 +91,6 @@ public interface TraversalStrategies extends Serializable, Cloneable {
public TraversalStrategies clone();
/**
- * Get the {@link TraverserGeneratorFactory} to use to generate traversers.
- */
- public TraverserGeneratorFactory getTraverserGeneratorFactory();
-
- /**
- * Set the {@link TraverserGeneratorFactory} to use for determining which {@link Traverser} type to generate for the {@link Traversal}.
- *
- * @param traverserGeneratorFactory the factory to use
- */
- public void setTraverserGeneratorFactory(final TraverserGeneratorFactory traverserGeneratorFactory);
-
- /**
* Sorts the list of provided strategies such that the {@link TraversalStrategy#applyPost()}
* and {@link TraversalStrategy#applyPrior()} dependencies are respected.
* <p/>
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
index c7ca249..0e1b0a6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
@@ -26,7 +26,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
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.O_TraverserGenerator;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_TraverserGenerator;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversalSideEffects;
import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversalStrategies;
@@ -70,12 +70,7 @@ public abstract class AbstractLambdaTraversal<S, E> implements Traversal.Admin<S
@Override
public TraverserGenerator getTraverserGenerator() {
- return O_TraverserGenerator.instance();
- }
-
- @Override
- public void addTraverserRequirement(final TraverserRequirement traverserRequirement) {
-
+ return B_O_TraverserGenerator.instance();
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
index 892a81c..2cd954d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
@@ -86,7 +86,7 @@ public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements Trav
}
@Override
- protected Iterator<Traverser<E>> standardAlgorithm() {
+ protected Iterator<Traverser.Admin<E>> standardAlgorithm() {
while (true) {
if (!this.first) {
for (final List<Traversal.Admin<S, E>> options : this.traversalOptions.values()) {
@@ -128,8 +128,8 @@ public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements Trav
}
@Override
- protected Iterator<Traverser<E>> computerAlgorithm() {
- final List<Traverser<E>> ends = new ArrayList<>();
+ protected Iterator<Traverser.Admin<E>> computerAlgorithm() {
+ final List<Traverser.Admin<E>> ends = new ArrayList<>();
final Traverser.Admin<S> start = this.starts.next();
final M choice = TraversalUtil.apply(start, this.branchTraversal);
final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
index 62c723d..e2affd4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
@@ -55,7 +55,7 @@ public final class LocalStep<S, E> extends AbstractStep<S, E> implements Travers
}
@Override
- protected Traverser<E> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
if (this.first) {
this.first = false;
this.localTraversal.addStart(this.starts.next());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
index 49487bb..b365d7f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
@@ -165,7 +165,7 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
}
@Override
- protected Iterator<Traverser<S>> standardAlgorithm() throws NoSuchElementException {
+ protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException {
while (true) {
if (this.repeatTraversal.getEndStep().hasNext()) {
return this.repeatTraversal.getEndStep();
@@ -186,7 +186,7 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
}
@Override
- protected Iterator<Traverser<S>> computerAlgorithm() throws NoSuchElementException {
+ protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException {
final Traverser.Admin<S> start = this.starts.next();
if (doUntil(start, true)) {
start.resetLoops();
@@ -253,7 +253,7 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
}
@Override
- protected Iterator<Traverser<S>> standardAlgorithm() throws NoSuchElementException {
+ protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException {
final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent();
while (true) {
final Traverser.Admin<S> start = this.starts.next();
@@ -276,7 +276,7 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
}
@Override
- protected Iterator<Traverser<S>> computerAlgorithm() throws NoSuchElementException {
+ protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException {
final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent();
final Traverser.Admin<S> start = this.starts.next();
start.incrLoops(repeatStep.getId());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
index d611d30..9bc6f4d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
@@ -34,7 +34,7 @@ public final class AndStep<S> extends ConnectiveStep<S> {
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
while (true) {
final Traverser.Admin<S> start = this.starts.next();
boolean alive = true;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
index f5f0597..e07d951 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
@@ -32,7 +32,7 @@ public abstract class FilterStep<S> extends AbstractStep<S, S> {
}
@Override
- protected Traverser<S> processNextStart() {
+ protected Traverser.Admin<S> processNextStart() {
while (true) {
final Traverser.Admin<S> traverser = this.starts.next();
if (this.filter(traverser))
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
index ba49402..70dc430 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
@@ -34,7 +34,7 @@ public final class OrStep<S> extends ConnectiveStep<S> {
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
while (true) {
final Traverser.Admin<S> start = this.starts.next();
for (final Traversal.Admin<S, ?> traversal : this.traversals) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
index 7dff803..7576cc1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
@@ -89,7 +89,7 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
long toEmit = avail - toSkip - toTrim;
this.counter.getAndAdd(toSkip + toEmit);
- traverser.asAdmin().setBulk(toEmit);
+ traverser.setBulk(toEmit);
return true;
}
@@ -159,7 +159,7 @@ public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging,
throw FastNoSuchElementException.instance();
final TraverserSet<S> barrier = new TraverserSet<>();
while (this.starts.hasNext()) {
- barrier.add(this.starts.next().asAdmin());
+ barrier.add(this.starts.next());
}
return barrier;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
index a8f88fd..0a4da58 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
@@ -70,8 +70,8 @@ public final class SampleGlobalStep<S> extends CollectingBarrierStep<S> implemen
return;
//////////////// else sample the set
double totalWeight = 0.0d;
- for (final Traverser<S> s : traverserSet) {
- totalWeight = totalWeight + TraversalUtil.apply(s.asAdmin(), this.probabilityTraversal).doubleValue() * s.bulk();
+ for (final Traverser.Admin<S> s : traverserSet) {
+ totalWeight = totalWeight + TraversalUtil.apply(s, this.probabilityTraversal).doubleValue() * s.bulk();
}
///////
final TraverserSet<S> sampledSet = new TraverserSet<>();
@@ -86,8 +86,8 @@ public final class SampleGlobalStep<S> extends CollectingBarrierStep<S> implemen
for (int i = 0; i < (s.bulk() - sampleBulk); i++) {
runningWeight = runningWeight + currentWeight;
if (RANDOM.nextDouble() <= ((runningWeight / totalWeight))) {
- final Traverser.Admin<S> split = s.asAdmin().split();
- split.asAdmin().setBulk(1l);
+ final Traverser.Admin<S> split = s.split();
+ split.setBulk(1l);
sampledSet.add(split);
runningAmountToSample++;
totalWeight = totalWeight - currentWeight;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
index 78320b5..9d19cb9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
@@ -57,7 +57,7 @@ public final class TailGlobalStep<S> extends AbstractStep<S, S> implements Bypas
}
@Override
- public Traverser<S> processNextStart() {
+ public Traverser.Admin<S> processNextStart() {
if (this.bypass) {
// If we are bypassing this step, let everything through.
return this.starts.next();
@@ -145,7 +145,7 @@ public final class TailGlobalStep<S> extends AbstractStep<S, S> implements Bypas
throw FastNoSuchElementException.instance();
final TraverserSet<S> barrier = new TraverserSet<>();
while (this.starts.hasNext()) {
- barrier.add(this.starts.next().asAdmin());
+ barrier.add(this.starts.next());
}
return barrier;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index 7313bd8..d2f4cd4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -72,7 +72,7 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
}
@Override
- protected Traverser<Vertex> processNextStart() {
+ protected Traverser.Admin<Vertex> processNextStart() {
if (this.first) {
this.first = false;
final Vertex vertex = this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(EmptyTraverser.instance()));
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
index f3cdbfd..b80b115 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
@@ -52,7 +52,7 @@ public final class CoalesceStep<S, E> extends FlatMapStep<S, E> implements Trave
protected Iterator<E> flatMap(final Traverser.Admin<S> traverser) {
for (final Traversal.Admin<S, E> coalesceTraversal : this.coalesceTraversals) {
coalesceTraversal.reset();
- coalesceTraversal.addStart(traverser.asAdmin().split());
+ coalesceTraversal.addStart(traverser.split());
if (coalesceTraversal.hasNext())
return coalesceTraversal;
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
index eb111c8..3d7dc24 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
@@ -38,7 +38,7 @@ public abstract class FlatMapStep<S, E> extends AbstractStep<S, E> {
}
@Override
- protected Traverser<E> processNextStart() {
+ protected Traverser.Admin<E> processNextStart() {
while (true) {
if (this.iterator.hasNext()) {
return this.head.split(this.iterator.next(), this);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
index 4131b83..70513d3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
@@ -107,7 +107,7 @@ public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implemen
}
@Override
- protected Traverser<E> processNextStart() {
+ protected Traverser.Admin<E> processNextStart() {
while (true) {
if (this.iterator.hasNext()) {
return this.isStart ? this.getTraversal().getTraverserGenerator().generate(this.iterator.next(), (Step) this, 1l) : this.head.split(this.iterator.next(), this);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index c2000c5..05b3492 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -98,7 +98,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
final TraverserSet traverserSet = new TraverserSet();
this.valueTraversal.reset();
this.valueTraversal.addStart(traverser);
- this.valueTraversal.getEndStep().forEachRemaining(t -> traverserSet.add(t.asAdmin()));
+ this.valueTraversal.getEndStep().forEachRemaining(traverserSet::add);
map.put(key, (V) traverserSet);
} else
map.put(key, (V) traverser);
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
index a5709cb..b1b6c6e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
@@ -35,11 +35,11 @@ public final class HasNextStep<S> extends AbstractStep<S, Boolean> {
}
@Override
- protected Traverser<Boolean> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<Boolean> processNextStart() throws NoSuchElementException {
if (this.starts.hasNext()) {
final Traverser.Admin<S> s = this.starts.next();
return s.split(Boolean.TRUE, this);
} else
- return this.traversal.asAdmin().getTraverserGenerator().generate(Boolean.FALSE, (Step) this, 1l);
+ return this.getTraversal().getTraverserGenerator().generate(Boolean.FALSE, (Step) this, 1l);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
index a0890c1..03e544e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
@@ -32,7 +32,7 @@ public abstract class MapStep<S, E> extends AbstractStep<S, E> {
}
@Override
- protected Traverser<E> processNextStart() {
+ protected Traverser.Admin<E> processNextStart() {
final Traverser.Admin<S> traverser = this.starts.next();
return traverser.split(this.map(traverser), this);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
index 5bbb3c3..eb11e5a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
@@ -310,7 +310,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
}
@Override
- protected Iterator<Traverser<Map<String, E>>> standardAlgorithm() throws NoSuchElementException {
+ protected Iterator<Traverser.Admin<Map<String, E>>> standardAlgorithm() throws NoSuchElementException {
while (true) {
Traverser.Admin traverser = null;
if (this.first) {
@@ -319,7 +319,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
} else {
for (final Traversal.Admin<?, ?> matchTraversal : this.matchTraversals) {
if (matchTraversal.hasNext()) {
- traverser = matchTraversal.getEndStep().next().asAdmin();
+ traverser = matchTraversal.getEndStep().next();
break;
}
}
@@ -351,7 +351,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
}
@Override
- protected Iterator<Traverser<Map<String, E>>> computerAlgorithm() throws NoSuchElementException {
+ protected Iterator<Traverser.Admin<Map<String, E>>> computerAlgorithm() throws NoSuchElementException {
while (true) {
if (this.first) {
this.first = false;
@@ -374,7 +374,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
traverser.setStepId(matchTraversal.getStartStep().getId()); // go down the traversal match sub-pattern
return IteratorUtils.of(traverser);
} else { // OR
- final List<Traverser<Map<String, E>>> traversers = new ArrayList<>(this.matchTraversals.size());
+ final List<Traverser.Admin<Map<String, E>>> traversers = new ArrayList<>(this.matchTraversals.size());
for (final Traversal.Admin<?, ?> matchTraversal : this.matchTraversals) {
final Traverser.Admin split = traverser.split();
split.getTags().add(matchTraversal.getStartStep().getId());
@@ -414,7 +414,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
}
@Override
- protected Traverser<Object> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<Object> processNextStart() throws NoSuchElementException {
final Traverser.Admin<Object> traverser = this.starts.next();
traverser.addLabels(Collections.singleton(this.getId()));
((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordStart(traverser, this.getTraversal());
@@ -463,7 +463,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
}
@Override
- protected Traverser<Object> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<Object> processNextStart() throws NoSuchElementException {
while (true) {
final Traverser.Admin traverser = this.starts.next();
// no end label
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java
index 370e404..b9c0f92 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java
@@ -50,7 +50,7 @@ public final class NoOpBarrierStep<S> extends AbstractStep<S, S> implements Loca
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
this.processAllStarts();
return this.barrier.remove();
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileMarkerStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileMarkerStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileMarkerStep.java
index 6159082..bfef33d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileMarkerStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileMarkerStep.java
@@ -36,7 +36,7 @@ public final class ProfileMarkerStep<S> extends AbstractStep<S, S> {
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
return this.starts.next();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
index c397a7a..7f4c993 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
@@ -105,7 +105,7 @@ public final class AggregateStep<S> extends AbstractStep<S, S> implements SideEf
}
@Override
- protected Traverser<S> processNextStart() {
+ protected Traverser.Admin<S> processNextStart() {
this.processAllStarts();
return this.barrier.remove();
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
index e99f727..88a1cb7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
@@ -52,7 +52,7 @@ public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> impl
@Override
protected void sideEffect(final Traverser.Admin<S> traverser) {
final Map<E, Long> map = new HashMap<>(1);
- map.put(TraversalUtil.applyNullable(traverser.asAdmin(), this.keyTraversal), traverser.bulk());
+ map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), traverser.bulk());
this.getTraversal().getSideEffects().add(this.sideEffectKey, map);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index 7050668..70f4e4b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -83,7 +83,7 @@ public final class GroupSideEffectStep<S, K, V> extends SideEffectStep<S> implem
final TraverserSet traverserSet = new TraverserSet();
valueTraversal.reset();
valueTraversal.addStart(traverser);
- valueTraversal.getEndStep().forEachRemaining(t -> traverserSet.add(t.asAdmin()));
+ valueTraversal.getEndStep().forEachRemaining(traverserSet::add);
map.put(key, traverserSet);
} else
map.put(key, traverser.split());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
index 269f2c9..f4ae018 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
@@ -34,7 +34,7 @@ public final class IdentityStep<S> extends AbstractStep<S, S> {
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
return this.starts.next();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java
index 5779460..64fdbe0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java
@@ -72,8 +72,8 @@ public final class ProfileSideEffectStep<S> extends SideEffectStep<S> implements
}
@Override
- public Traverser<S> next() {
- Traverser<S> ret = null;
+ public Traverser.Admin<S> next() {
+ Traverser.Admin<S> ret = null;
initializeIfNeeded();
getMetrics().start(this.getId());
try {
@@ -81,7 +81,7 @@ public final class ProfileSideEffectStep<S> extends SideEffectStep<S> implements
return ret;
} finally {
if (ret != null) {
- getMetrics().finish(this.getId(), ret.asAdmin().bulk());
+ getMetrics().finish(this.getId(), ret.bulk());
} else {
getMetrics().stop(this.getId());
}
@@ -98,7 +98,7 @@ public final class ProfileSideEffectStep<S> extends SideEffectStep<S> implements
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
return this.starts.next();
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
index 2854e6e..46708d4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
@@ -34,7 +34,7 @@ public abstract class SideEffectStep<S> extends AbstractStep<S, S> {
protected abstract void sideEffect(final Traverser.Admin<S> traverser);
@Override
- protected Traverser<S> processNextStart() {
+ protected Traverser.Admin<S> processNextStart() {
final Traverser.Admin<S> traverser = this.starts.next();
this.sideEffect(traverser);
return traverser;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
index f401be2..cfb7323 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
@@ -55,7 +55,7 @@ public class StartStep<S> extends AbstractStep<S, S> {
}
@Override
- protected Traverser<S> processNextStart() {
+ protected Traverser.Admin<S> processNextStart() {
if (this.first) {
if (null != this.start) {
if (this.start instanceof Iterator)
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
index 2fa263d..ac5b0c6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreStep.java
@@ -53,7 +53,7 @@ public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectC
@Override
protected void sideEffect(final Traverser.Admin<S> traverser) {
final BulkSet<Object> bulkSet = new BulkSet<>();
- bulkSet.add(TraversalUtil.applyNullable(traverser.asAdmin(), this.storeTraversal), traverser.bulk());
+ bulkSet.add(TraversalUtil.applyNullable(traverser, this.storeTraversal), traverser.bulk());
this.getTraversal().getSideEffects().add(this.sideEffectKey, bulkSet);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
index 4d9b7d2..96b4e0e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
@@ -114,7 +114,7 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
}
@Override
- public Traverser<E> next() {
+ public Traverser.Admin<E> next() {
if (null != this.nextEnd) {
try {
return this.prepareTraversalForNextStep(this.nextEnd);
@@ -123,7 +123,7 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
}
} else {
while (true) {
- final Traverser.Admin<E> traverser = (Traverser.Admin<E>) this.processNextStart();
+ final Traverser.Admin<E> traverser = this.processNextStart();
if (null != traverser.get() && 0 != traverser.bulk())
return this.prepareTraversalForNextStep(traverser);
}
@@ -159,7 +159,7 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
this.traversal = traversal;
}
- protected abstract Traverser<E> processNextStart() throws NoSuchElementException;
+ protected abstract Traverser.Admin<E> processNextStart() throws NoSuchElementException;
@Override
public String toString() {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
index 5119c4c..f3bd457 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
@@ -101,7 +101,7 @@ public abstract class CollectingBarrierStep<S> extends AbstractStep<S, S> implem
}
@Override
- public Traverser<S> processNextStart() {
+ public Traverser.Admin<S> processNextStart() {
if (!this.traverserSet.isEmpty()) {
return this.traverserSet.remove();
} else if (this.starts.hasNext()) {
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
index faae072..5acff58 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
@@ -32,14 +32,14 @@ import java.util.NoSuchElementException;
*/
public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> implements GraphComputing {
- private Iterator<Traverser<E>> previousIterator = EmptyIterator.instance();
+ private Iterator<Traverser.Admin<E>> previousIterator = EmptyIterator.instance();
public ComputerAwareStep(final Traversal.Admin traversal) {
super(traversal);
}
@Override
- protected Traverser<E> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
while (true) {
if (this.previousIterator.hasNext())
return this.previousIterator.next();
@@ -59,9 +59,9 @@ public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> impleme
return clone;
}
- protected abstract Iterator<Traverser<E>> standardAlgorithm() throws NoSuchElementException;
+ protected abstract Iterator<Traverser.Admin<E>> standardAlgorithm() throws NoSuchElementException;
- protected abstract Iterator<Traverser<E>> computerAlgorithm() throws NoSuchElementException;
+ protected abstract Iterator<Traverser.Admin<E>> computerAlgorithm() throws NoSuchElementException;
//////
@@ -72,7 +72,7 @@ public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> impleme
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
final Traverser.Admin<S> start = this.starts.next();
if (this.traverserStepIdAndLabelsSetByChild) {
start.setStepId(((ComputerAwareStep<?, ?>) this.getTraversal().getParent()).getNextStep().getId());
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
index 9c6c5f0..8e699f1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
@@ -126,7 +126,7 @@ public final class EmptyStep<S, E> implements Step<S, E>, TraversalParent {
}
@Override
- public Traverser<E> next() {
+ public Traverser.Admin<E> next() {
throw FastNoSuchElementException.instance();
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
index 09e82d0..30558e8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
@@ -20,7 +20,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.util;
import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.util.iterator.MultiIterator;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
import java.io.Serializable;
@@ -32,33 +31,30 @@ import java.util.Iterator;
public final class ExpandableStepIterator<S> implements Iterator<Traverser.Admin<S>>, Serializable {
private final TraverserSet<S> traverserSet = new TraverserSet<>();
- private final MultiIterator<Traverser.Admin<S>> traverserIterators = new MultiIterator<>();
- private final Step<S,?> hostStep;
+ private final Step<S, ?> hostStep;
- public ExpandableStepIterator(final Step<S,?> hostStep) {
+ public ExpandableStepIterator(final Step<S, ?> hostStep) {
this.hostStep = hostStep;
}
@Override
public boolean hasNext() {
- return !this.traverserSet.isEmpty() || this.hostStep.getPreviousStep().hasNext() || this.traverserIterators.hasNext();
+ return !this.traverserSet.isEmpty() || this.hostStep.getPreviousStep().hasNext();
}
@Override
public Traverser.Admin<S> next() {
if (!this.traverserSet.isEmpty())
return this.traverserSet.remove();
- if (this.traverserIterators.hasNext())
- return this.traverserIterators.next();
/////////////
if (this.hostStep.getPreviousStep().hasNext())
- return (Traverser.Admin<S>) this.hostStep.getPreviousStep().next();
+ return this.hostStep.getPreviousStep().next();
/////////////
return this.traverserSet.remove();
}
public void add(final Iterator<Traverser.Admin<S>> iterator) {
- this.traverserIterators.addIterator(iterator);
+ iterator.forEachRemaining(this.traverserSet::add);
}
public void add(final Traverser.Admin<S> traverser) {
@@ -71,7 +67,6 @@ public final class ExpandableStepIterator<S> implements Iterator<Traverser.Admin
}
public void clear() {
- this.traverserIterators.clear();
this.traverserSet.clear();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
index 11a758c..40d88fe 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
@@ -24,9 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
import org.apache.tinkerpop.gremlin.process.traversal.step.Generating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import java.util.Iterator;
import java.util.function.BinaryOperator;
@@ -125,12 +123,12 @@ public abstract class ReducingBarrierStep<S, E> extends AbstractStep<S, E> imple
}
@Override
- public Traverser<E> processNextStart() {
+ public Traverser.Admin<E> processNextStart() {
if (this.done)
throw FastNoSuchElementException.instance();
this.processAllStarts();
this.done = true;
- final Traverser<E> traverser = TraversalHelper.getRootTraversal(this.getTraversal()).getTraverserGenerator().generate(this.generateFinalResult(this.seed), (Step) this, 1l);
+ final Traverser.Admin<E> traverser = this.getTraversal().getTraverserGenerator().generate(this.generateFinalResult(this.seed), (Step<E, E>) this, 1l);
this.seed = null;
return traverser;
}
@@ -145,7 +143,7 @@ public abstract class ReducingBarrierStep<S, E> extends AbstractStep<S, E> imple
@Override
public MemoryComputeKey<E> getMemoryComputeKey() {
- return MemoryComputeKey.<E>of(this.getId(), this.getBiOperator(), false, true);
+ return MemoryComputeKey.of(this.getId(), this.getBiOperator(), false, true);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java
index 4740f78..2aa9f77 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java
@@ -49,7 +49,7 @@ public final class RequirementsStep<S> extends AbstractStep<S, S> {
}
@Override
- protected Traverser<S> processNextStart() throws NoSuchElementException {
+ protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
return this.starts.next();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
index fe15865..9cccb67 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
@@ -44,9 +44,10 @@ public abstract class SupplyingBarrierStep<S, E> extends AbstractStep<S, E> impl
@Override
public void addStarts(final Iterator<Traverser<S>> starts) {
- if (starts.hasNext())
+ if (starts.hasNext()) {
this.done = false;
- super.addStarts(starts);
+ super.addStarts(starts);
+ }
}
@Override
@@ -62,12 +63,12 @@ public abstract class SupplyingBarrierStep<S, E> extends AbstractStep<S, E> impl
}
@Override
- public Traverser<E> processNextStart() {
+ public Traverser.Admin<E> processNextStart() {
if (this.done)
throw FastNoSuchElementException.instance();
this.processAllStarts();
this.done = true;
- return this.getTraversal().asAdmin().getTraverserGenerator().generate(this.supply(), (Step) this, 1l);
+ return this.getTraversal().asAdmin().getTraverserGenerator().generate(this.supply(), (Step<E, E>) this, 1l);
}
@Override
@@ -96,7 +97,7 @@ public abstract class SupplyingBarrierStep<S, E> extends AbstractStep<S, E> impl
@Override
public void addBarrier(final Boolean barrier) {
- this.done = false;
+ this.done = false;
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/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
index 09296e5..722a1bd 100644
--- 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
@@ -63,8 +63,6 @@ public final class VertexProgramStrategy extends AbstractTraversalStrategy<Trave
if (!(traversal.getParent() instanceof EmptyStep)) // VertexPrograms can only execute at the root level of a Traversal
return;
- traversal.addTraverserRequirement(TraverserRequirement.BULK); // all graph computations require bulk
-
// back propagate as()-labels off of vertex computing steps
Step<?, ?> currentStep = traversal.getEndStep();
final Set<String> currentLabels = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
index 44e0f6e..2671a91 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
@@ -28,7 +28,7 @@ import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public class O_Traverser<T> extends AbstractTraverser<T> {
+public abstract class O_Traverser<T> extends AbstractTraverser<T> {
protected Set<String> tags = null;
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java
deleted file mode 100644
index 8a67b18..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java
+++ /dev/null
@@ -1,52 +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.traverser;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class O_TraverserGenerator implements TraverserGenerator {
-
- private static final Set<TraverserRequirement> REQUIREMENTS = Collections.singleton(TraverserRequirement.OBJECT);
- private static final O_TraverserGenerator INSTANCE = new O_TraverserGenerator();
-
- private O_TraverserGenerator() {
- }
-
- @Override
- public <S> Traverser.Admin<S> generate(final S start, final Step<S, ?> startStep, final long initialBulk) {
- return new O_Traverser<>(start);
- }
-
- @Override
- public Set<TraverserRequirement> getProvidedRequirements() {
- return REQUIREMENTS;
- }
-
- public static O_TraverserGenerator instance() {
- return INSTANCE;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
index 4ca721a..9c23df9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
@@ -18,16 +18,15 @@
*/
package org.apache.tinkerpop.gremlin.process.traversal.traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-import java.io.Serializable;
+import java.util.Set;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
-public interface TraverserGeneratorFactory extends Serializable {
+public interface TraverserGeneratorFactory {
- public TraverserGenerator getTraverserGenerator(final Traversal.Admin<?, ?> traversal);
+ public TraverserGenerator getTraverserGenerator(final Set<TraverserRequirement> requirements);
}
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5b4009d6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
index 88d1d21..ce7de2d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
@@ -26,8 +26,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
* A {@link TraverserRequirement} is a list of requirements that a {@link Traversal} requires of a {@link Traverser}.
* The less requirements, the simpler the traverser can be (both in terms of space and time constraints).
* Every {@link Step} provides its specific requirements via {@link Step#getRequirements()}.
- * Moreover, every {@link org.apache.tinkerpop.gremlin.process.traversal.Traversal.Admin} can be provided requirements via
- * {@link org.apache.tinkerpop.gremlin.process.traversal.Traversal.Admin#addTraverserRequirement(TraverserRequirement)}.
*
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/