org.apache.tinkerpop.gremlin.process.traversal

## Interface TraversalStrategy<S extends TraversalStrategy>

- All Superinterfaces:
    Comparable<Class<? extends TraversalStrategy>>, Serializable
  All Known Subinterfaces:
    TraversalStrategy.DecorationStrategy, TraversalStrategy.FinalizationStrategy, TraversalStrategy.OptimizationStrategy, TraversalStrategy.ProviderOptimizationStrategy, TraversalStrategy.VerificationStrategy

      public interface TraversalStrategy<S extends TraversalStrategy>
      extends Serializable, Comparable<Class<? extends TraversalStrategy>>

  A `TraversalStrategy` defines a particular atomic operation for mutating a `Traversal` prior to its evaluation. There are 5 pre-defined "traversal categories": `TraversalStrategy.DecorationStrategy`, `TraversalStrategy.OptimizationStrategy`, `TraversalStrategy.ProviderOptimizationStrategy`, `TraversalStrategy.FinalizationStrategy`, and `TraversalStrategy.VerificationStrategy`. Strategies within a category are sorted amongst themselves and then category sorts are applied in the ordered specified previous. That is, decorations are applied, then optimizations, then provider optimizations, then finalizations, and finally, verifications. If a strategy does not fit within the specified categories, then it can simply implement `TraversalStrategy` and can have priors/posts that span categories.

  A traversal strategy should be a final class as various internal operations on a strategy are based on its ability to be assigned to more general classes. A traversal strategy should typically be stateless with a public static `instance()` method. However, at limit, a traversal strategy can have a state defining constructor (typically via a "builder"), but that state can not mutate once instantiated.
  Author:
    Marko A. Rodriguez (http://markorodriguez.com), Matthias Broecheler (me@matthiasb.com)

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `TraversalStrategy.DecorationStrategy` Implemented by strategies that adds "application logic" to the traversal (e.g.
    `static interface` | `TraversalStrategy.FinalizationStrategy` Implemented by strategies that do final behaviors that require a fully compiled traversal to work (e.g.
    `static interface` | `TraversalStrategy.OptimizationStrategy` Implemented by strategies that rewrite the traversal to be more efficient, but with the same semantics (e.g.
    `static interface` | `TraversalStrategy.ProviderOptimizationStrategy` Implemented by strategies that rewrite the traversal to be more efficient, but with the same semantics.
    `static interface` | `TraversalStrategy.VerificationStrategy` Implemented by strategies where there is no more behavioral tweaking of the traversal required.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `STRATEGY`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `apply(Traversal.Admin<?,?> traversal)`
    `default Set<Class<? extends S>>` | `applyPost()` The set of strategies that must be executed after this strategy is executed.
    `default Set<Class<? extends S>>` | `applyPrior()` The set of strategies that must be executed before this strategy is executed.
    `default int` | `compareTo(Class<? extends TraversalStrategy> otherTraversalCategory)`
    `default org.apache.commons.configuration2.Configuration` | `getConfiguration()` Get the configuration representation of this strategy.
    `default Class<S>` | `getTraversalCategory()` The type of traversal strategy -- i.e.

- - ### Field Detail

    - #### STRATEGY

          static final String STRATEGY

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### apply

          void apply(Traversal.Admin<?,?> traversal)

    - #### applyPrior

          default Set<Class<? extends S>> applyPrior()

      The set of strategies that must be executed before this strategy is executed. If there are no ordering requirements, the default implementation returns an empty set.
      Returns:
        the set of strategies that must be executed prior to this one.

    - #### applyPost

          default Set<Class<? extends S>> applyPost()

      The set of strategies that must be executed after this strategy is executed. If there are no ordering requirements, the default implementation returns an empty set.
      Returns:
        the set of strategies that must be executed post this one

    - #### getTraversalCategory

          default Class<S> getTraversalCategory()

      The type of traversal strategy -- i.e. `TraversalStrategy.DecorationStrategy`, `TraversalStrategy.OptimizationStrategy`, `TraversalStrategy.FinalizationStrategy`, or `TraversalStrategy.VerificationStrategy`.
      Returns:
        the traversal strategy category class

    - #### getConfiguration

          default org.apache.commons.configuration2.Configuration getConfiguration()

      Get the configuration representation of this strategy. This is useful for converting a strategy into a serialized form.
      Returns:
        the configuration used to create this strategy

    - #### compareTo

          default int compareTo(Class<? extends TraversalStrategy> otherTraversalCategory)

      Specified by:
        `compareTo` in interface `Comparable<Class<? extends TraversalStrategy>>`

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