|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.avalon.fortress.util.dag.Vertex
public final class Vertex
Vertex is used to track dependencies and each node in a graph. Typical uses would be to ensure components are started up and torn down in the proper order, or bundles were loaded and unloaded in the proper order, etc.
Field Summary | |
---|---|
private java.util.List |
m_dependencies
List of all direct dependent Vertices. |
private java.lang.String |
m_name
|
private java.lang.Object |
m_node
|
private int |
m_order
|
private boolean |
m_seen
Flag used to keep track of whether or not a given vertex has been seen by the resolveOrder methods. |
Constructor Summary | |
---|---|
Vertex(java.lang.Object node)
A vertex wraps a node, which can be anything. |
|
Vertex(java.lang.String name,
java.lang.Object node)
A vertex wraps a node, which can be anything. |
Method Summary | |
---|---|
void |
addDependency(Vertex v)
Add a dependecy to this Vertex. |
int |
compareTo(java.lang.Object o)
Used in the sort algorithm to sort all the Vertices so that they respect the ordinal they were given during the topological sort. |
java.util.List |
getDependencies()
Get the list of dependencies. |
java.lang.String |
getName()
Returns the name of the Vertex. |
java.lang.Object |
getNode()
Get the wrapped node that this Vertex represents. |
int |
getOrder()
Get the ordinal for this vertex. |
void |
reset()
Reset the Vertex so that all the flags and runtime states are set back to the original values. |
void |
resolveOrder()
Recurse through the tree from this vertex assigning an order to each and at the same time checking for any cyclic dependencies. |
private int |
resolveOrder(java.lang.String path)
Recursively searches for cycles by travelling down the dependency lists of this vertex, looking for the start vertex. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final java.lang.String m_name
private final java.lang.Object m_node
private int m_order
private boolean m_seen
private final java.util.List m_dependencies
Constructor Detail |
---|
public Vertex(java.lang.Object node)
node
- The wrapped node.public Vertex(java.lang.String name, java.lang.Object node)
name
- A name for the node which will be used to produce useful errors.node
- The wrapped node.Method Detail |
---|
public void reset()
public java.lang.String getName()
public java.lang.Object getNode()
public void addDependency(Vertex v)
v
- The vertex we depend on.public void resolveOrder() throws CyclicDependencyException
CyclicDependencyException
- If a cyclic dependency is discovered.private int resolveOrder(java.lang.String path) throws CyclicDependencyException
path
- The path to the Vertex. It is worth the load as it makes a
descriptive error message possible.
CyclicDependencyException
- If a cyclic dependency is discovered.public java.util.List getDependencies()
public int compareTo(java.lang.Object o)
compareTo
in interface java.lang.Comparable
o
- The other Vertex to compare with
public int getOrder()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |