org.apache.tinkerpop.gremlin.process.traversal.util

## 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 and 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 and Description
    `DefaultTraversal()`
    `DefaultTraversal(Bytecode bytecode)`
    `DefaultTraversal(Graph graph)`
    `DefaultTraversal(TraversalSource traversalSource)`
    `DefaultTraversal(TraversalSource traversalSource, Traversal.Admin<S,E> traversal)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addStart(Traverser.Admin<S> start)` Add a single `Traverser.Admin` object to the head of the traversal.
    `void` | `addStarts(Iterator<Traverser.Admin<S>> starts)` Add an iterator of `Traverser.Admin` objects to the head/start of the traversal.
    `<S2,E2> Traversal.Admin<S2,E2>` | `addStep(int index, Step<?,?> step)` Add a `Step` to an arbitrary point in the traversal.
    `void` | `applyStrategies()` Apply the registered `TraversalStrategies` to the traversal.
    `Traversal.Admin<S,E>` | `asAdmin()` Get access to administrative methods of the traversal via its accompanying `Traversal.Admin`.
    `DefaultTraversal<S,E>` | `clone()` Cloning is used to duplicate the traversal typically in OLAP environments.
    `boolean` | `equals(Object other)`
    `Bytecode` | `getBytecode()` Get the `Bytecode` associated with the construction of this traversal.
    `Step<?,E>` | `getEndStep()` Get the end/tail of the traversal.
    `Optional<Graph>` | `getGraph()` Gets the `Graph` instance associated to this `Traversal`.
    `TraversalParent` | `getParent()` Get the `TraversalParent` `Step` that is the parent of this traversal.
    `TraversalSideEffects` | `getSideEffects()` Get the `TraversalSideEffects` associated with the traversal.
    `Step<S,?>` | `getStartStep()` Get the start/head of the traversal.
    `List<Step>` | `getSteps()` Get the `Step` instances associated with this traversal.
    `TraversalStrategies` | `getStrategies()` Get the `TraversalStrategies` associated with this traversal.
    `Optional<TraversalSource>` | `getTraversalSource()` Gets the `TraversalSource` that spawned the `Traversal` instance initially if present.
    `TraverserGenerator` | `getTraverserGenerator()` Get the `TraverserGenerator` associated with this traversal.
    `Set<TraverserRequirement>` | `getTraverserRequirements()` Get the set of all `TraverserRequirement`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 its `TraversalStrategies` applied to it, it is locked.
    `E` | `next()`
    `Traverser.Admin<E>` | `nextTraverser()`
    `void` | `notifyClose()` Gets a callback from `Traversal.close()` for additional operations specific to the `Traversal` implementation.
    `<S2,E2> Traversal.Admin<S2,E2>` | `removeStep(int index)` Remove a `Step` from the traversal.
    `void` | `reset()` Call the `Step.reset()` method on every step in the traversal.
    `void` | `setGraph(Graph graph)`
    `void` | `setParent(TraversalParent step)` Set the `TraversalParent` `Step` that is the parent of this traversal.
    `void` | `setSideEffects(TraversalSideEffects sideEffects)` Set the `TraversalSideEffects` of this traversal.
    `void` | `setStrategies(TraversalStrategies strategies)` Set the `TraversalStrategies` 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.Admin

      `addStep, equals, getTraverserSetSupplier, isRoot, removeStep`

    - ### 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 java.util.Iterator

      `remove`

- - ### Field Detail

    - #### graph

          protected transient Graph graph

    - #### g

          protected transient TraversalSource g

    - #### steps

          protected List<Step> steps

    - #### unmodifiableSteps

          protected List<Step> unmodifiableSteps

    - #### 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 the `Bytecode` associated with the construction of this traversal.
      Specified by:
        `getBytecode` in interface `Traversal.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 accompanying `Traversal.Admin`.
      Specified by:
        `asAdmin` in interface `Traversal<S,E>`
      Returns:
        the admin of this traversal

    - #### getTraverserGenerator

          public TraverserGenerator getTraverserGenerator()

      Description copied from interface: `Traversal.Admin`
      Get the `TraverserGenerator` associated with this traversal. The traversal generator creates `Traverser` instances that are respective of the traversal's `TraverserRequirement`.
      Specified by:
        `getTraverserGenerator` in interface `Traversal.Admin<S,E>`
      Returns:
        the generator of traversers

    - #### applyStrategies

          public void applyStrategies()
                               throws IllegalStateException

      Description copied from interface: `Traversal.Admin`
      Apply the registered `TraversalStrategies` 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 interface `Traversal.Admin<S,E>`
      Throws:
        `IllegalStateException` - if the `TraversalStrategies` have already been applied

    - #### getTraverserRequirements

          public Set<TraverserRequirement> getTraverserRequirements()

      Description copied from interface: `Traversal.Admin`
      Get the set of all `TraverserRequirement`s for this traversal.
      Specified by:
        `getTraverserRequirements` in interface `Traversal.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 the `Step` instances associated with this traversal. The steps are ordered according to their linked list structure as defined by `Step.getPreviousStep()` and `Step.getNextStep()`.
      Specified by:
        `getSteps` in interface `Traversal.Admin<S,E>`
      Returns:
        the ordered steps of the traversal

    - #### nextTraverser

          public Traverser.Admin<E> nextTraverser()

      Specified by:
        `nextTraverser` in interface `Traversal.Admin<S,E>`

    - #### hasNext

          public boolean hasNext()

      Specified by:
        `hasNext` in interface `Iterator<E>`

    - #### next

          public E next()

      Specified by:
        `next` in interface `Iterator<E>`

    - #### reset

          public void reset()

      Description copied from interface: `Traversal.Admin`
      Call the `Step.reset()` method on every step in the traversal.
      Specified by:
        `reset` in interface `Traversal.Admin<S,E>`

    - #### addStart

          public void addStart(Traverser.Admin<S> start)

      Description copied from interface: `Traversal.Admin`
      Add a single `Traverser.Admin` object to the head of the traversal. Users should typically not need to call this method. For dynamic inject of data, they should use `InjectStep`.
      Specified by:
        `addStart` in interface `Traversal.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 of `Traverser.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 use `InjectStep`.
      Specified by:
        `addStarts` in interface `Traversal.Admin<S,E>`
      Parameters:
        `starts` - an iterators of traversers

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### getStartStep

          public Step<S,?> getStartStep()

      Description copied from interface: `Traversal.Admin`
      Get the start/head of the traversal. If the traversal is empty, then an `EmptyStep` instance is returned.
      Specified by:
        `getStartStep` in interface `Traversal.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 an `EmptyStep` instance is returned.
      Specified by:
        `getEndStep` in interface `Traversal.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.
      Specified by:
        `clone` in interface `Traversal.Admin<S,E>`
      Overrides:
        `clone` in class `Object`
      Returns:
        The cloned traversal

    - #### isLocked

          public boolean isLocked()

      Description copied from interface: `Traversal.Admin`
      When the traversal has had its `TraversalStrategies` applied to it, it is locked.
      Specified by:
        `isLocked` in interface `Traversal.Admin<S,E>`
      Returns:
        whether the traversal is locked

    - #### 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 from `Traversal.close()` for additional operations specific to the `Traversal` implementation. A good implementation will use `Traversal.close()` to release resources in steps and this method to release resources specific to the `Traversal` implementations.
      Specified by:
        `notifyClose` in interface `Traversal<S,E>`

    - #### setSideEffects

          public void setSideEffects(TraversalSideEffects sideEffects)

      Description copied from interface: `Traversal.Admin`
      Set the `TraversalSideEffects` of this traversal.
      Specified by:
        `setSideEffects` in interface `Traversal.Admin<S,E>`
      Parameters:
        `sideEffects` - the sideEffects to set for this traversal.

    - #### getSideEffects

          public TraversalSideEffects getSideEffects()

      Description copied from interface: `Traversal.Admin`
      Get the `TraversalSideEffects` 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 using `GraphTraversal.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 interface `Traversal.Admin<S,E>`
      Returns:
        The traversal sideEffects

    - #### setStrategies

          public void setStrategies(TraversalStrategies strategies)

      Description copied from interface: `Traversal.Admin`
      Set the `TraversalStrategies` to be used by this traversal at evaluation time.
      Specified by:
        `setStrategies` in interface `Traversal.Admin<S,E>`
      Parameters:
        `strategies` - the strategies to use on this traversal

    - #### getStrategies

          public TraversalStrategies getStrategies()

      Description copied from interface: `Traversal.Admin`
      Get the `TraversalStrategies` associated with this traversal.
      Specified by:
        `getStrategies` in interface `Traversal.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 a `Step` to an arbitrary point in the traversal.
      Specified by:
        `addStep` in interface `Traversal.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 step
        `step` - the step to add
      Returns:
        the newly modulated traversal
      Throws:
        `IllegalStateException` - if the `TraversalStrategies` have already been applied

    - #### removeStep

          public <S2,E2> Traversal.Admin<S2,E2> removeStep(int index)
                                                    throws IllegalStateException

      Description copied from interface: `Traversal.Admin`
      Remove a `Step` from the traversal.
      Specified by:
        `removeStep` in interface `Traversal.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 the `TraversalStrategies` have already been applied

    - #### setParent

          public void setParent(TraversalParent step)

      Description copied from interface: `Traversal.Admin`
      Set the `TraversalParent` `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 a `EmptyStep`.
      Specified by:
        `setParent` in interface `Traversal.Admin<S,E>`
      Parameters:
        `step` - the traversal holder parent step or `EmptyStep` if it has no parent

    - #### getParent

          public TraversalParent getParent()

      Description copied from interface: `Traversal.Admin`
      Get the `TraversalParent` `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 interface `Traversal.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`
      Gets the `Graph` instance associated to this `Traversal`.
      Specified by:
        `getGraph` in interface `Traversal.Admin<S,E>`

    - #### getTraversalSource

          public Optional<TraversalSource> getTraversalSource()

      Description copied from interface: `Traversal.Admin`
      Gets the `TraversalSource` that spawned the `Traversal` instance initially if present. This `TraversalSource` should have spawned from the associated `Graph` returned from `Traversal.Admin.getGraph()`.
      Specified by:
        `getTraversalSource` in interface `Traversal.Admin<S,E>`

    - #### setGraph

          public void setGraph(Graph graph)

      Specified by:
        `setGraph` in interface `Traversal.Admin<S,E>`

    - #### equals

          public boolean equals(Object other)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

Copyright © 2013–2022 Apache Software Foundation. All rights reserved.