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.
|
int |
loops(String loopName)
Return the number of times the traverser has gone through the named 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()
int loops(String loopName)
loopName
- the name applied to the loop or null for the containing loopIllegalArgumentException
- if the loopName is not definedlong 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 sideEffectsIllegalArgumentException
default 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 keyIllegalArgumentException
default 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–2023 Apache Software Foundation. All rights reserved.