Interface TraversalStrategies
-
- All Superinterfaces:
Cloneable,Iterable<TraversalStrategy<?>>,Serializable
- All Known Implementing Classes:
DefaultTraversalStrategies,EmptyTraversalStrategies
public interface TraversalStrategies extends Serializable, Cloneable, Iterable<TraversalStrategy<?>>
ATraversalmaintains a set ofTraversalStrategyinstances within a TraversalStrategies object. TraversalStrategies are responsible for compiling a traversal prior to its execution.- Author:
- Marko A. Rodriguez (http://markorodriguez.com), Matthias Broecheler (me@matthiasb.com)
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static classTraversalStrategies.GlobalCache
-
Field Summary
Fields Modifier and Type Field Description static List<Class<? extends TraversalStrategy>>STRATEGY_CATEGORIES
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description TraversalStrategiesaddStrategies(TraversalStrategy<?>... strategies)Add all the providedTraversalStrategyinstances to the current collection.TraversalStrategiesclone()default <T extends TraversalStrategy>
Optional<T>getStrategy(Class<T> traversalStrategyClass)Return theTraversalStrategyinstance associated with the provided class.Iterator<TraversalStrategy<?>>iterator()Return anIteratorof theTraversalStrategyinstances.TraversalStrategiesremoveStrategies(Class<? extends TraversalStrategy>... strategyClasses)Remove all the providedTraversalStrategyclasses from the current collection.static Set<TraversalStrategy<?>>sortStrategies(Set<TraversalStrategy<?>> strategies)Sorts the list of provided strategies such that theTraversalStrategy.applyPost()andTraversalStrategy.applyPrior()dependencies are respected.default List<TraversalStrategy<?>>toList()Return an immutable list of theTraversalStrategyinstances.static voidvisit(Map<Class<? extends TraversalStrategy>,Set<Class<? extends TraversalStrategy>>> dependencyMap, List<Class<? extends TraversalStrategy>> sortedStrategyClasses, Set<Class<? extends TraversalStrategy>> seenStrategyClases, List<Class<? extends TraversalStrategy>> unprocessedStrategyClasses, Class<? extends TraversalStrategy> strategyClass)-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
STRATEGY_CATEGORIES
static final List<Class<? extends TraversalStrategy>> STRATEGY_CATEGORIES
-
-
Method Detail
-
toList
default List<TraversalStrategy<?>> toList()
Return an immutable list of theTraversalStrategyinstances.
-
iterator
Iterator<TraversalStrategy<?>> iterator()
Return anIteratorof theTraversalStrategyinstances.- Specified by:
iteratorin interfaceIterable<TraversalStrategy<?>>
-
getStrategy
default <T extends TraversalStrategy> Optional<T> getStrategy(Class<T> traversalStrategyClass)
Return theTraversalStrategyinstance associated with the provided class.- Type Parameters:
T- the strategy class type- Parameters:
traversalStrategyClass- the class of the strategy to get- Returns:
- an optional containing the strategy instance or not
-
addStrategies
TraversalStrategies addStrategies(TraversalStrategy<?>... strategies)
Add all the providedTraversalStrategyinstances to the current collection. When all the provided strategies have been added, the collection is resorted. If a strategy class is found to already be defined, it is removed and replaced by the newly added one.- Parameters:
strategies- the traversal strategies to add- Returns:
- the newly updated/sorted traversal strategies collection
-
removeStrategies
TraversalStrategies removeStrategies(Class<? extends TraversalStrategy>... strategyClasses)
Remove all the providedTraversalStrategyclasses from the current collection. When all the provided strategies have been removed, the collection is resorted.- Parameters:
strategyClasses- the traversal strategies to remove by their class- Returns:
- the newly updated/sorted traversal strategies collection
-
clone
TraversalStrategies clone()
-
sortStrategies
static Set<TraversalStrategy<?>> sortStrategies(Set<TraversalStrategy<?>> strategies)
Sorts the list of provided strategies such that theTraversalStrategy.applyPost()andTraversalStrategy.applyPrior()dependencies are respected. Note, that the order may not be unique.- Parameters:
strategies- the traversal strategies to sort
-
visit
static void visit(Map<Class<? extends TraversalStrategy>,Set<Class<? extends TraversalStrategy>>> dependencyMap, List<Class<? extends TraversalStrategy>> sortedStrategyClasses, Set<Class<? extends TraversalStrategy>> seenStrategyClases, List<Class<? extends TraversalStrategy>> unprocessedStrategyClasses, Class<? extends TraversalStrategy> strategyClass)
-
-