Class DefaultTraversal<S,E>
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal<S,E>
-
- All Implemented Interfaces:
Serializable
,AutoCloseable
,Cloneable
,Iterator<E>
,Traversal<S,E>
,Traversal.Admin<S,E>
- Direct Known Subclasses:
DefaultCredentialTraversal
,DefaultGraphTraversal
,ScriptTraversal
public class DefaultTraversal<S,E> extends Object implements Traversal.Admin<S,E>
- Author:
- Marko A. Rodriguez (http://markorodriguez.com)
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.tinkerpop.gremlin.process.traversal.Traversal
Traversal.Admin<S,E>, Traversal.Exceptions, Traversal.Symbols
-
-
Field Summary
Fields Modifier and Type Field Description protected Bytecode
bytecode
protected boolean
closed
protected TraversalSource
g
protected TraverserGenerator
generator
protected Graph
graph
protected boolean
locked
protected TraversalParent
parent
protected Set<TraverserRequirement>
requirements
protected TraversalSideEffects
sideEffects
protected List<Step>
steps
protected TraversalStrategies
strategies
protected List<Step>
unmodifiableSteps
-
Constructor Summary
Constructors Constructor Description DefaultTraversal()
DefaultTraversal(Bytecode bytecode)
DefaultTraversal(TraversalSource traversalSource)
DefaultTraversal(TraversalSource traversalSource, Traversal.Admin<S,E> traversal)
DefaultTraversal(Graph graph)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addStart(Traverser.Admin<S> start)
Add a singleTraverser.Admin
object to the head of the traversal.void
addStarts(Iterator<Traverser.Admin<S>> starts)
Add an iterator ofTraverser.Admin
objects to the head/start of the traversal.<S2,E2>
Traversal.Admin<S2,E2>addStep(int index, Step<?,?> step)
Add aStep
to an arbitrary point in the traversal.void
applyStrategies()
Apply the registeredTraversalStrategies
to the traversal.Traversal.Admin<S,E>
asAdmin()
Get access to administrative methods of the traversal via its accompanyingTraversal.Admin
.DefaultTraversal<S,E>
clone()
Cloning is used to duplicate the traversal typically in OLAP environments.boolean
equals(Object other)
Bytecode
getBytecode()
Get theBytecode
associated with the construction of this traversal.Step<?,E>
getEndStep()
Get the end/tail of the traversal.Optional<Graph>
getGraph()
TraversalParent
getParent()
Get theTraversalParent
Step
that is the parent of this traversal.TraversalSideEffects
getSideEffects()
Get theTraversalSideEffects
associated with the traversal.Step<S,?>
getStartStep()
Get the start/head of the traversal.List<Step>
getSteps()
Get theStep
instances associated with this traversal.TraversalStrategies
getStrategies()
Get theTraversalStrategies
associated with this traversal.Optional<TraversalSource>
getTraversalSource()
Gets theTraversalSource
that spawned theTraversal
instance initially if present.TraverserGenerator
getTraverserGenerator()
Get theTraverserGenerator
associated with this traversal.Set<TraverserRequirement>
getTraverserRequirements()
Get the set of allTraverserRequirement
s for this traversal.int
hashCode()
boolean
hasNext()
boolean
isClosed()
Determines if the traversal has been fully iterated and resources released.boolean
isLocked()
When the traversal has had itsTraversalStrategies
applied to it, it is locked.void
lock()
Lock the traversal and perform any final adjustments to it after strategy application.E
next()
Traverser.Admin<E>
nextTraverser()
void
notifyClose()
Gets a callback fromTraversal.close()
for additional operations specific to theTraversal
implementation.<S2,E2>
Traversal.Admin<S2,E2>removeStep(int index)
Remove aStep
from the traversal.void
reset()
Call theStep.reset()
method on every step in the traversal.void
setGraph(Graph graph)
void
setLocked(boolean locked)
Allow the locked property of the traversal to be directly set by those who know what they are doing.void
setParent(TraversalParent step)
Set theTraversalParent
Step
that is the parent of this traversal.void
setSideEffects(TraversalSideEffects sideEffects)
Set theTraversalSideEffects
of this traversal.void
setStrategies(TraversalStrategies strategies)
Set theTraversalStrategies
to be used by this traversal at evaluation time.String
toString()
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.tinkerpop.gremlin.process.traversal.Traversal
close, explain, fill, forEachRemaining, forEachRemaining, iterate, next, none, profile, promise, toBulkSet, toList, toSet, toStream, tryNext
-
Methods inherited from interface org.apache.tinkerpop.gremlin.process.traversal.Traversal.Admin
addStep, equals, getTraverserSetSupplier, isRoot, removeStep
-
-
-
-
Field Detail
-
graph
protected transient Graph graph
-
g
protected transient TraversalSource g
-
parent
protected TraversalParent parent
-
sideEffects
protected TraversalSideEffects sideEffects
-
strategies
protected TraversalStrategies strategies
-
generator
protected transient TraverserGenerator generator
-
requirements
protected Set<TraverserRequirement> requirements
-
locked
protected boolean locked
-
closed
protected boolean closed
-
bytecode
protected Bytecode bytecode
-
-
Constructor Detail
-
DefaultTraversal
public DefaultTraversal(Graph graph)
-
DefaultTraversal
public DefaultTraversal(TraversalSource traversalSource)
-
DefaultTraversal
public DefaultTraversal(TraversalSource traversalSource, Traversal.Admin<S,E> traversal)
-
DefaultTraversal
public DefaultTraversal()
-
DefaultTraversal
public DefaultTraversal(Bytecode bytecode)
-
-
Method Detail
-
getBytecode
public Bytecode getBytecode()
Description copied from interface:Traversal.Admin
Get theBytecode
associated with the construction of this traversal.- Specified by:
getBytecode
in interfaceTraversal.Admin<S,E>
- Returns:
- the byte code representation of the traversal
-
asAdmin
public Traversal.Admin<S,E> asAdmin()
Description copied from interface:Traversal
Get access to administrative methods of the traversal via its accompanyingTraversal.Admin
.
-
getTraverserGenerator
public TraverserGenerator getTraverserGenerator()
Description copied from interface:Traversal.Admin
Get theTraverserGenerator
associated with this traversal. The traversal generator createsTraverser
instances that are respective of the traversal'sTraverserRequirement
.- Specified by:
getTraverserGenerator
in interfaceTraversal.Admin<S,E>
- Returns:
- the generator of traversers
-
applyStrategies
public void applyStrategies() throws IllegalStateException
Description copied from interface:Traversal.Admin
Apply the registeredTraversalStrategies
to the traversal. Once the strategies are applied, the traversal is "locked" and can no longer have steps added to it. The order of operations for strategy applications should be: globally id steps, apply each strategy in turn to root traversal, then recursively to nested traversals.- Specified by:
applyStrategies
in interfaceTraversal.Admin<S,E>
- Throws:
IllegalStateException
- if theTraversalStrategies
have already been applied
-
getTraverserRequirements
public Set<TraverserRequirement> getTraverserRequirements()
Description copied from interface:Traversal.Admin
Get the set of allTraverserRequirement
s for this traversal.- Specified by:
getTraverserRequirements
in interfaceTraversal.Admin<S,E>
- Returns:
- the features of a traverser that are required to execute properly in this traversal
-
getSteps
public List<Step> getSteps()
Description copied from interface:Traversal.Admin
Get theStep
instances associated with this traversal. The steps are ordered according to their linked list structure as defined byStep.getPreviousStep()
andStep.getNextStep()
.- Specified by:
getSteps
in interfaceTraversal.Admin<S,E>
- Returns:
- the ordered steps of the traversal
-
nextTraverser
public Traverser.Admin<E> nextTraverser()
- Specified by:
nextTraverser
in interfaceTraversal.Admin<S,E>
-
reset
public void reset()
Description copied from interface:Traversal.Admin
Call theStep.reset()
method on every step in the traversal.- Specified by:
reset
in interfaceTraversal.Admin<S,E>
-
addStart
public void addStart(Traverser.Admin<S> start)
Description copied from interface:Traversal.Admin
Add a singleTraverser.Admin
object to the head of the traversal. Users should typically not need to call this method. For dynamic inject of data, they should useInjectStep
.- Specified by:
addStart
in interfaceTraversal.Admin<S,E>
- Parameters:
start
- a traverser to add to the traversal
-
addStarts
public void addStarts(Iterator<Traverser.Admin<S>> starts)
Description copied from interface:Traversal.Admin
Add an iterator ofTraverser.Admin
objects to the head/start of the traversal. Users should typically not need to call this method. For dynamic inject of data, they should useInjectStep
.- Specified by:
addStarts
in interfaceTraversal.Admin<S,E>
- Parameters:
starts
- an iterators of traversers
-
getStartStep
public Step<S,?> getStartStep()
Description copied from interface:Traversal.Admin
Get the start/head of the traversal. If the traversal is empty, then anEmptyStep
instance is returned.- Specified by:
getStartStep
in interfaceTraversal.Admin<S,E>
- Returns:
- the start step of the traversal
-
getEndStep
public Step<?,E> getEndStep()
Description copied from interface:Traversal.Admin
Get the end/tail of the traversal. If the traversal is empty, then anEmptyStep
instance is returned.- Specified by:
getEndStep
in interfaceTraversal.Admin<S,E>
- Returns:
- the end step of the traversal
-
clone
public DefaultTraversal<S,E> clone()
Description copied from interface:Traversal.Admin
Cloning is used to duplicate the traversal typically in OLAP environments.
-
isLocked
public boolean isLocked()
Description copied from interface:Traversal.Admin
When the traversal has had itsTraversalStrategies
applied to it, it is locked.- Specified by:
isLocked
in interfaceTraversal.Admin<S,E>
- Returns:
- whether the traversal is locked
-
setLocked
public void setLocked(boolean locked)
Allow the locked property of the traversal to be directly set by those who know what they are doing. Are you sure you know what you're doing?
-
lock
public void lock()
Description copied from interface:Traversal.Admin
Lock the traversal and perform any final adjustments to it after strategy application.- Specified by:
lock
in interfaceTraversal.Admin<S,E>
-
isClosed
public boolean isClosed()
Determines if the traversal has been fully iterated and resources released.
-
notifyClose
public void notifyClose()
Description copied from interface:Traversal
Gets a callback fromTraversal.close()
for additional operations specific to theTraversal
implementation. A good implementation will useTraversal.close()
to release resources in steps and this method to release resources specific to theTraversal
implementations.- Specified by:
notifyClose
in interfaceTraversal<S,E>
-
setSideEffects
public void setSideEffects(TraversalSideEffects sideEffects)
Description copied from interface:Traversal.Admin
Set theTraversalSideEffects
of this traversal.- Specified by:
setSideEffects
in interfaceTraversal.Admin<S,E>
- Parameters:
sideEffects
- the sideEffects to set for this traversal.
-
getSideEffects
public TraversalSideEffects getSideEffects()
Description copied from interface:Traversal.Admin
Get theTraversalSideEffects
associated with the traversal. This method should not be called externally for purposes of retrieving side-effects as traversal results. Traversal results should only be returned by way of the execution of the traversal itself. Should a side-effect of a traversal be needed it should only be obtained by usingGraphTraversal.cap(String, String...)
so that the side-effect can be included as part of the traversal iteration. Relying on this method to get side-effects in these situations may not result in consistent behavior across all types of executions and environments (e.g. remoting).- Specified by:
getSideEffects
in interfaceTraversal.Admin<S,E>
- Returns:
- The traversal sideEffects
-
setStrategies
public void setStrategies(TraversalStrategies strategies)
Description copied from interface:Traversal.Admin
Set theTraversalStrategies
to be used by this traversal at evaluation time.- Specified by:
setStrategies
in interfaceTraversal.Admin<S,E>
- Parameters:
strategies
- the strategies to use on this traversal
-
getStrategies
public TraversalStrategies getStrategies()
Description copied from interface:Traversal.Admin
Get theTraversalStrategies
associated with this traversal.- Specified by:
getStrategies
in interfaceTraversal.Admin<S,E>
- Returns:
- the strategies associated with this traversal
-
addStep
public <S2,E2> Traversal.Admin<S2,E2> addStep(int index, Step<?,?> step) throws IllegalStateException
Description copied from interface:Traversal.Admin
Add aStep
to an arbitrary point in the traversal.- Specified by:
addStep
in interfaceTraversal.Admin<S,E>
- Type Parameters:
S2
- the new start type of the traversal (if the added step was a start step)E2
- the new end type of the traversal (if the added step was an end step)- Parameters:
index
- the location in the traversal to insert the stepstep
- the step to add- Returns:
- the newly modulated traversal
- Throws:
IllegalStateException
- if theTraversalStrategies
have already been applied
-
removeStep
public <S2,E2> Traversal.Admin<S2,E2> removeStep(int index) throws IllegalStateException
Description copied from interface:Traversal.Admin
Remove aStep
from the traversal.- Specified by:
removeStep
in interfaceTraversal.Admin<S,E>
- Type Parameters:
S2
- the new start type of the traversal (if the removed step was a start step)E2
- the new end type of the traversal (if the removed step was an end step)- Parameters:
index
- the location in the traversal of the step to be evicted- Returns:
- the newly modulated traversal
- Throws:
IllegalStateException
- if theTraversalStrategies
have already been applied
-
setParent
public void setParent(TraversalParent step)
Description copied from interface:Traversal.Admin
Set theTraversalParent
Step
that is the parent of this traversal. Traversals can be nested and this is the means by which the traversal tree is connected. If there is no parent, then it should be aEmptyStep
.- Specified by:
setParent
in interfaceTraversal.Admin<S,E>
- Parameters:
step
- the traversal holder parent step orEmptyStep
if it has no parent
-
getParent
public TraversalParent getParent()
Description copied from interface:Traversal.Admin
Get theTraversalParent
Step
that is the parent of this traversal. Traversals can be nested and this is the means by which the traversal tree is walked.- Specified by:
getParent
in interfaceTraversal.Admin<S,E>
- Returns:
- the traversal holder parent step or
EmptyStep
if it has no parent.
-
getGraph
public Optional<Graph> getGraph()
Description copied from interface:Traversal.Admin
- Specified by:
getGraph
in interfaceTraversal.Admin<S,E>
-
getTraversalSource
public Optional<TraversalSource> getTraversalSource()
Description copied from interface:Traversal.Admin
Gets theTraversalSource
that spawned theTraversal
instance initially if present. ThisTraversalSource
should have spawned from the associatedGraph
returned fromTraversal.Admin.getGraph()
.- Specified by:
getTraversalSource
in interfaceTraversal.Admin<S,E>
-
setGraph
public void setGraph(Graph graph)
- Specified by:
setGraph
in interfaceTraversal.Admin<S,E>
-
-