public interface Traverser<T> extends Serializable, Comparable<Traverser<T>>, Cloneable
Traverser represents the current state of an object flowing through a Traversal.
A traverser maintains a reference to the current object, a traverser-local "sack", a traversal-global sideEffect,
a bulk count, and a path history.
Different types of traversers can exist depending on the semantics of the traversal and the desire for
space/time optimizations of the developer.| Modifier and Type | Interface and Description |
|---|---|
static interface |
Traverser.Admin<T>
The methods in System.Traverser are useful to underlying Step and Traversal implementations.
|
| Modifier and Type | Method and Description |
|---|---|
default Traverser.Admin<T> |
asAdmin()
Typecast the traverser to a "system traverser" so
Traverser.Admin methods can be accessed. |
long |
bulk()
A traverser may represent a grouping of traversers to allow for more efficient data propagation.
|
Traverser<T> |
clone()
Traverser cloning is important when splitting a traverser at a bifurcation point in a traversal.
|
default int |
compareTo(Traverser<T> other)
If the underlying object of the traverser is comparable, compare it with the other traverser.
|
T |
get()
Get the object that the traverser is current at.
|
int |
loops()
Return the number of times the traverser has gone through a looping section of a traversal.
|
Path |
path()
Get the current path of the traverser.
|
default <A> A |
path(Pop pop,
String stepLabel) |
default <A> A |
path(String stepLabel)
Get the object associated with the specified step-label in the traverser's path history.
|
<S> S |
sack()
Get the sack local sack object of this traverser.
|
<S> void |
sack(S object)
Set the traversers sack object to the provided value ("sack the value").
|
default <A> A |
sideEffects(String sideEffectKey)
Get a particular value from the side-effects of the traverser (thus, traversal).
|
default void |
sideEffects(String sideEffectKey,
Object sideEffectValue)
Add a particular value to the respective side-effect of the traverser (thus, traversal).
|
T get()
<S> S sack()
S - the type of the sack object<S> void sack(S object)
S - the type of the objectobject - the new value of the traverser's sackPath path()
default <A> A path(String stepLabel)
A - the type of the objectstepLabel - the step-label in the path to accessint loops()
long bulk()
default <A> A sideEffects(String sideEffectKey) throws IllegalArgumentException
A - the type of the returned objectsideEffectKey - the key of the value to get from the sideEffectsIllegalArgumentExceptiondefault void sideEffects(String sideEffectKey, Object sideEffectValue) throws IllegalArgumentException
sideEffectKey - the key of the value to set int the sideEffectssideEffectValue - the value to set for the sideEffect keyIllegalArgumentExceptiondefault int compareTo(Traverser<T> other) throws ClassCastException
compareTo in interface Comparable<Traverser<T>>other - the other traverser that presumably has a comparable internal objectClassCastException - if the object of the traverser is not comparabledefault Traverser.Admin<T> asAdmin()
Traverser.Admin methods can be accessed.
This is used as a helper method to avoid the awkwardness of ((Traverser.Administrative)traverser).
The default implementation simply returns "this" type casted to Traverser.Admin.Copyright © 2013–2018 Apache Software Foundation. All rights reserved.