Package hudson.util
Class CyclicGraphDetector<N>
- java.lang.Object
-
- hudson.util.CyclicGraphDetector<N>
-
public abstract class CyclicGraphDetector<N> extends Object
Traverses a directed graph and if it contains any cycle, throw an exception.- Author:
- Kohsuke Kawaguchi
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CyclicGraphDetector.CycleDetectedException
-
Constructor Summary
Constructors Constructor Description CyclicGraphDetector()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract Iterable<? extends N>
getEdges(N n)
List up edges from the given node (by listing nodes that those edges point to.)List<N>
getSorted()
Returns all the nodes in the topologically sorted order.protected void
reactOnCycle(N q, List<N> cycle)
React on detected cycles - default implementation throws an exception.void
run(Iterable<? extends N> allNodes)
-
-
-
Method Detail
-
run
public void run(Iterable<? extends N> allNodes) throws CyclicGraphDetector.CycleDetectedException
-
getSorted
public List<N> getSorted()
Returns all the nodes in the topologically sorted order. That is, if there's an edge a → b, b always come earlier than a.
-
getEdges
protected abstract Iterable<? extends N> getEdges(N n)
List up edges from the given node (by listing nodes that those edges point to.)- Returns:
- Never null.
-
reactOnCycle
protected void reactOnCycle(N q, List<N> cycle) throws CyclicGraphDetector.CycleDetectedException
React on detected cycles - default implementation throws an exception.
-
-