diff --git a/src/java/org/apache/commons/graph/Graph.java b/src/java/org/apache/commons/graph/Graph.java
index 24568e5..2b78f78 100644
--- a/src/java/org/apache/commons/graph/Graph.java
+++ b/src/java/org/apache/commons/graph/Graph.java
@@ -65,7 +65,7 @@ import org.apache.commons.graph.visitor.PrintVisitor;
/**
* Describes a generic graph G = (V, E), i.e. a set of vertices and edges.
*
- * @version $Id: Graph.java,v 1.3 2001/12/02 18:07:18 jvanzyl Exp $
+ * @version $Id: Graph.java,v 1.4 2001/12/02 19:23:40 jvanzyl Exp $
* @author M. Dahm
*/
public class Graph implements Cloneable, Serializable {
@@ -73,7 +73,7 @@ public class Graph implements Cloneable, Serializable {
/**
* Debugging flag
*/
- private boolean debug = true;
+ private boolean debug = false;
private boolean directed = true;
diff --git a/src/java/org/apache/commons/graph/util/DependencyResolver.java b/src/java/org/apache/commons/graph/util/DependencyResolver.java
index e4ac537..9a51097 100644
--- a/src/java/org/apache/commons/graph/util/DependencyResolver.java
+++ b/src/java/org/apache/commons/graph/util/DependencyResolver.java
@@ -75,7 +75,8 @@ public class DependencyResolver
*/
public List getSortedDependencies(String g)
{
- List l = getSortedDependencies(new LabeledVertex(g));
+ LabeledVertex start = (LabeledVertex) vertices.get(g);
+ List l = getSortedDependencies(start);
ArrayList sl = new ArrayList();
for (Iterator i = l.iterator(); i.hasNext();)
@@ -122,9 +123,8 @@ public class DependencyResolver
*/
public void addGraphable(String g, List dependencies)
{
- LabeledVertex startingVertex = null;
-
- if (vertices.get(g) == null)
+ LabeledVertex startingVertex = (LabeledVertex) vertices.get(g);
+ if (startingVertex == null)
{
// Create a labeled vertex with our starting vertex g.
startingVertex = new LabeledVertex(g);
@@ -141,16 +141,57 @@ public class DependencyResolver
// the graph and only add it if it isn't. We need to
// add some code to the graph object to deal with this
// automatically.
- if (vertices.get(dependencyName) == null)
+ LabeledVertex dependency = (LabeledVertex)vertices.get(dependencyName);
+ if (dependency == null)
{
- LabeledVertex dependency = new LabeledVertex(dependencyName);
+ dependency = new LabeledVertex(dependencyName);
vertices.put(dependencyName, dependency);
graph.addVertex(dependency);
-
- // Create an edge between the starting vertex and
- // the dependency.
- graph.addEdge(startingVertex, dependency);
}
+
+ // Create an edge between the starting vertex and
+ // the dependency.
+ graph.addEdge(startingVertex, dependency);
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ Graph graph = new Graph(true);
+
+ LabeledVertex a = new LabeledVertex("A");
+ LabeledVertex b = new LabeledVertex("B");
+ LabeledVertex c = new LabeledVertex("C");
+ LabeledVertex d = new LabeledVertex("D");
+ LabeledVertex e = new LabeledVertex("E");
+ LabeledVertex f = new LabeledVertex("F");
+
+ graph.addVertex(a);
+ graph.addVertex(b);
+ graph.addVertex(c);
+ graph.addVertex(d);
+ graph.addVertex(e);
+ graph.addVertex(f);
+
+ graph.addEdge(c,f);
+
+ graph.addEdge(d,a);
+ graph.addEdge(d,b);
+
+ graph.addEdge(e,b);
+ graph.addEdge(e,c);
+ graph.addEdge(e,d);
+
+ graph.addEdge(f,d);
+
+ DependencyVisitor visitor = new DependencyVisitor();
+ DFS dfs = new DFS(visitor);
+ dfs.start(graph,(Vertex)f);
+ List l = visitor.getSortedDependencies();
+
+ for (Iterator i = l.iterator(); i.hasNext();)
+ {
+ System.out.println(i.next());
}
}
}
diff --git a/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java b/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java
index f236fc9..557d9e0 100644
--- a/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java
+++ b/src/java/org/apache/commons/graph/visitor/DependencyVisitor.java
@@ -54,7 +54,7 @@ package org.apache.commons.graph.visitor;
* .
*/
-import java.util.ArrayList;
+import java.util.LinkedList;
import java.util.List;
import org.apache.commons.graph.Vertex;
@@ -65,7 +65,7 @@ import org.apache.commons.graph.Vertex;
* this class (and of course its descendants) may be passed to a DFS
* object.
*
- * @version $Id: DependencyVisitor.java,v 1.1 2001/12/02 18:07:18 jvanzyl Exp $
+ * @version $Id: DependencyVisitor.java,v 1.2 2001/12/02 19:23:40 jvanzyl Exp $
* @author M. Dahm
* @see DFS
*/
@@ -78,20 +78,20 @@ public class DependencyVisitor
* they must be processed by the mechanism using
* the dependency list.
*/
- List sortedDependencies;
+ LinkedList sortedDependencies;
/**
* Default constructor.
*/
public DependencyVisitor()
{
- sortedDependencies = new ArrayList();
+ sortedDependencies = new LinkedList();
}
public void finishVertex(Vertex v)
{
super.finishVertex(v);
- sortedDependencies.add(v);
+ sortedDependencies.addLast(v);
}
public List getSortedDependencies()
diff --git a/src/test/org/apache/commons/graph/util/TestDependencyResolver.java b/src/test/org/apache/commons/graph/util/TestDependencyResolver.java
index 6f24e63..ddb07ca 100644
--- a/src/test/org/apache/commons/graph/util/TestDependencyResolver.java
+++ b/src/test/org/apache/commons/graph/util/TestDependencyResolver.java
@@ -10,7 +10,7 @@ import java.util.StringTokenizer;
/**
* @author Jason van Zyl
- * @version $Id: TestDependencyResolver.java,v 1.1 2001/12/02 18:07:19 jvanzyl Exp $
+ * @version $Id: TestDependencyResolver.java,v 1.2 2001/12/02 19:23:40 jvanzyl Exp $
*/
public class TestDependencyResolver
extends TestCase
@@ -90,8 +90,6 @@ public class TestDependencyResolver
d.addGraphable("E", deps("B,C,D"));
d.addGraphable("F", deps("D"));
- System.out.println(">>> " + d.getVerticesString());
-
// Get the dependencies where we exclude the
// specified target.
assertEquals(compare,getList(d.getSortedDependencies("F")));
@@ -99,6 +97,7 @@ public class TestDependencyResolver
}
catch( Exception e )
{
+ e.printStackTrace();
fail();
}
}