You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2012/01/30 14:03:32 UTC

svn commit: r1237632 - in /commons/sandbox/graph/trunk/src: changes/ main/java/org/apache/commons/graph/flow/ main/java/org/apache/commons/graph/scc/ main/java/org/apache/commons/graph/visit/ test/java/org/apache/commons/graph/visit/

Author: simonetripodi
Date: Mon Jan 30 13:03:31 2012
New Revision: 1237632

URL: http://svn.apache.org/viewvc?rev=1237632&view=rev
Log:
[SANDBOX-372] Make the org.apache.commons.graph.visit.GraphVisitHandler able to return objects

Modified:
    commons/sandbox/graph/trunk/src/changes/changes.xml
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FlowNetworkHandler.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/CheriyanMehlhornGabowVisitHandler.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/DefaultSccAlgorithmSelector.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/KosarajuSharirVisitHandler.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/BaseGraphVisitHandler.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/DefaultVisitAlgorithmsSelector.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/GraphVisitHandler.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitAlgorithmsSelector.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitGraphBuilder.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/NodeSequenceVisitor.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/VisitTestCase.java

Modified: commons/sandbox/graph/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/changes/changes.xml?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/changes/changes.xml (original)
+++ commons/sandbox/graph/trunk/src/changes/changes.xml Mon Jan 30 13:03:31 2012
@@ -23,6 +23,9 @@
   </properties>
   <body>
   <release version="0.1" date="201?-??-??" description="First release.">
+    <action dev="simonetripodi" type="update" issue="SANDBOX-372">
+      Make the org.apache.commons.graph.visit.GraphVisitHandler able to return objects
+    </action>
     <action dev="simonetripodi" type="add" issue="SANDBOX-370" due-to="Matteo Moci">
       GraphML format exporter
     </action>

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/DefaultMaxFlowAlgorithmSelector.java Mon Jan 30 13:03:31 2012
@@ -95,8 +95,7 @@ final class DefaultMaxFlowAlgorithmSelec
         } );
 
         // create flow network handler
-        FlowNetworkHandler<V, WeightedEdge<W>, W> flowNetworkHandler =
-                        new FlowNetworkHandler<V, WeightedEdge<W>, W>( flowNetwork, source, target, monoid );
+        FlowNetworkHandler<V, W> flowNetworkHandler = new FlowNetworkHandler<V, W>( flowNetwork, source, target, monoid );
 
         // perform depth first search
         visit( flowNetwork ).from( source ).applyingDepthFirstSearch( flowNetworkHandler );
@@ -109,7 +108,7 @@ final class DefaultMaxFlowAlgorithmSelec
             visit( flowNetwork ).from( source ).applyingDepthFirstSearch( flowNetworkHandler );
         }
 
-        return flowNetworkHandler.getMaxFlow();
+        return flowNetworkHandler.onCompleted();
     }
 
     /**

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FlowNetworkHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FlowNetworkHandler.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FlowNetworkHandler.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/flow/FlowNetworkHandler.java Mon Jan 30 13:03:31 2012
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.graph.DirectedGraph;
-import org.apache.commons.graph.Graph;
 import org.apache.commons.graph.Vertex;
 import org.apache.commons.graph.VertexPair;
 import org.apache.commons.graph.WeightedEdge;
@@ -40,11 +39,11 @@ import org.apache.commons.graph.weight.O
  * @param <WE> the weighted edge type
  * @param <W> the weight type
  */
-class FlowNetworkHandler<V extends Vertex, WE extends WeightedEdge<W>, W>
-    extends BaseGraphVisitHandler<V, WE>
+class FlowNetworkHandler<V extends Vertex, W>
+    extends BaseGraphVisitHandler<V, WeightedEdge<W>, DirectedGraph<V, WeightedEdge<W>>, W>
 {
 
-    private final DirectedGraph<V, WE> flowNetwork;
+    private final DirectedGraph<V, WeightedEdge<W>> flowNetwork;
 
     private final V source;
 
@@ -54,14 +53,14 @@ class FlowNetworkHandler<V extends Verte
 
     private W maxFlow;
 
-    private final Map<WE, W> residualEdgeCapacities = new HashMap<WE, W>();
+    private final Map<WeightedEdge<W>, W> residualEdgeCapacities = new HashMap<WeightedEdge<W>, W>();
 
     // these are new for each new visit of the graph
-    private PredecessorsList<V, WE, W> predecessors;
+    private PredecessorsList<V, WeightedEdge<W>, W> predecessors;
 
     private boolean foundAugmentingPath;
 
-    FlowNetworkHandler( DirectedGraph<V, WE> flowNetwork, V source, V target, OrderedMonoid<W> orderedMonoid )
+    FlowNetworkHandler( DirectedGraph<V, WeightedEdge<W>> flowNetwork, V source, V target, OrderedMonoid<W> orderedMonoid )
     {
         this.flowNetwork = flowNetwork;
         this.source = source;
@@ -70,7 +69,7 @@ class FlowNetworkHandler<V extends Verte
 
         maxFlow = orderedMonoid.zero();
 
-        for ( WE edge : flowNetwork.getEdges() )
+        for ( WeightedEdge<W> edge : flowNetwork.getEdges() )
         {
             residualEdgeCapacities.put( edge, edge.getWeight() );
         }
@@ -95,11 +94,11 @@ class FlowNetworkHandler<V extends Verte
     void updateResidualNetworkWithCurrentAugmentingPath()
     {
         // build actual augmenting path
-        WeightedPath<V, WE, W> augmentingPath = predecessors.buildPath( source, target );
+        WeightedPath<V, WeightedEdge<W>, W> augmentingPath = predecessors.buildPath( source, target );
 
         // find flow increment
         W flowIncrement = null;
-        for ( WE edge : augmentingPath.getEdges() )
+        for ( WeightedEdge<W> edge : augmentingPath.getEdges() )
         {
             W edgeCapacity = residualEdgeCapacities.get( edge );
             if ( flowIncrement == null
@@ -111,7 +110,7 @@ class FlowNetworkHandler<V extends Verte
 
         // update max flow and capacities accordingly
         maxFlow = orderedMonoid.append( maxFlow, flowIncrement );
-        for ( WE edge : augmentingPath.getEdges() )
+        for ( WeightedEdge<W> edge : augmentingPath.getEdges() )
         {
             // decrease capacity for direct edge
             W directCapacity = residualEdgeCapacities.get( edge );
@@ -119,29 +118,20 @@ class FlowNetworkHandler<V extends Verte
 
             // increase capacity for inverse edge
             VertexPair<V> vertexPair = flowNetwork.getVertices( edge );
-            WE inverseEdge = flowNetwork.getEdge( vertexPair.getTail(), vertexPair.getHead() );
+            WeightedEdge<W> inverseEdge = flowNetwork.getEdge( vertexPair.getTail(), vertexPair.getHead() );
             W inverseCapacity = residualEdgeCapacities.get( inverseEdge );
             residualEdgeCapacities.put( inverseEdge, orderedMonoid.append( inverseCapacity, flowIncrement ) );
         }
     }
 
     /**
-     * Returns the maximum flow through the input graph.
-     * @return the maximum flow through the input graph
-     */
-    W getMaxFlow()
-    {
-        return maxFlow;
-    }
-
-    /**
      * {@inheritDoc}
      */
     @Override
-    public void discoverGraph( Graph<V, WE> graph )
+    public void discoverGraph( DirectedGraph<V, WeightedEdge<W>> graph )
     {
         // reset ausiliary structures for a new graph visit
-        predecessors = new PredecessorsList<V, WE, W>( graph, orderedMonoid );
+        predecessors = new PredecessorsList<V, WeightedEdge<W>, W>( graph, orderedMonoid );
         foundAugmentingPath = false;
     }
 
@@ -149,7 +139,7 @@ class FlowNetworkHandler<V extends Verte
      * {@inheritDoc}
      */
     @Override
-    public boolean discoverEdge( V head, WE edge, V tail )
+    public boolean discoverEdge( V head, WeightedEdge<W> edge, V tail )
     {
         W residualEdgeCapacity = residualEdgeCapacities.get( edge );
         // avoid expanding the edge when it has no residual capacity
@@ -165,7 +155,7 @@ class FlowNetworkHandler<V extends Verte
      * {@inheritDoc}
      */
     @Override
-    public boolean finishEdge( V head, WE edge, V tail )
+    public boolean finishEdge( V head, WeightedEdge<W> edge, V tail )
     {
         if ( tail.equals( target ) )
         {
@@ -176,4 +166,10 @@ class FlowNetworkHandler<V extends Verte
         return false;
     }
 
+    @Override
+    public W onCompleted()
+    {
+        return maxFlow;
+    }
+
 }

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/CheriyanMehlhornGabowVisitHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/CheriyanMehlhornGabowVisitHandler.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/CheriyanMehlhornGabowVisitHandler.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/CheriyanMehlhornGabowVisitHandler.java Mon Jan 30 13:03:31 2012
@@ -38,11 +38,11 @@ import org.apache.commons.graph.visit.Ba
  * @param <V> the Graph vertices type.
  * @param <E> the Graph edges type.
  */
-final class CheriyanMehlhornGabowVisitHandler<V extends Vertex, E extends Edge>
-    extends BaseGraphVisitHandler<V, E>
+final class CheriyanMehlhornGabowVisitHandler<V extends Vertex, E extends Edge, G extends DirectedGraph<V, E>>
+    extends BaseGraphVisitHandler<V, E, G, Void>
 {
 
-    private final DirectedGraph<V, E> graph;
+    private final G graph;
 
     private final Map<V, Integer> preorder = new HashMap<V, Integer>();
 
@@ -58,7 +58,7 @@ final class CheriyanMehlhornGabowVisitHa
 
     private int sscCounter = 0;
 
-    public CheriyanMehlhornGabowVisitHandler( DirectedGraph<V, E> graph, Set<V> marked )
+    public CheriyanMehlhornGabowVisitHandler( G graph, Set<V> marked )
     {
         this.graph = graph;
         this.marked = marked;

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/DefaultSccAlgorithmSelector.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/DefaultSccAlgorithmSelector.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/DefaultSccAlgorithmSelector.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/DefaultSccAlgorithmSelector.java Mon Jan 30 13:03:31 2012
@@ -61,7 +61,7 @@ public final class DefaultSccAlgorithmSe
     {
         source = checkNotNull( source, "KosarajuSharir algorithm requires a non-null source vertex" );
 
-        visit( graph ).from( source ).applyingDepthFirstSearch( new KosarajuSharirVisitHandler<V, E>( source ) );
+        visit( graph ).from( source ).applyingDepthFirstSearch( new KosarajuSharirVisitHandler<V, E, G>( source ) );
 
         DirectedGraph<V, E> reverted = new RevertedGraph<V, E>( graph );
 
@@ -77,7 +77,7 @@ public final class DefaultSccAlgorithmSe
     {
         final Set<V> marked = new HashSet<V>();
 
-        final GraphVisitHandler<V, E> visitHandler = new CheriyanMehlhornGabowVisitHandler<V, E>( graph, marked );
+        final GraphVisitHandler<V, E, G, Void> visitHandler = new CheriyanMehlhornGabowVisitHandler<V, E, G>( graph, marked );
 
         for ( V vertex : graph.getVertices() )
         {

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/KosarajuSharirVisitHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/KosarajuSharirVisitHandler.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/KosarajuSharirVisitHandler.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/scc/KosarajuSharirVisitHandler.java Mon Jan 30 13:03:31 2012
@@ -21,8 +21,8 @@ package org.apache.commons.graph.scc;
 
 import java.util.LinkedList;
 
+import org.apache.commons.graph.DirectedGraph;
 import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Graph;
 import org.apache.commons.graph.Vertex;
 import org.apache.commons.graph.visit.BaseGraphVisitHandler;
 
@@ -33,8 +33,8 @@ import org.apache.commons.graph.visit.Ba
  * @param <V> the Graph vertices type.
  * @param <E> the Graph edges type.
  */
-final class KosarajuSharirVisitHandler<V extends Vertex, E extends Edge>
-    extends BaseGraphVisitHandler<V, E>
+final class KosarajuSharirVisitHandler<V extends Vertex, E extends Edge, G extends DirectedGraph<V, E>>
+    extends BaseGraphVisitHandler<V, E, G, Void>
 {
 
     final V startVisit;
@@ -59,7 +59,7 @@ final class KosarajuSharirVisitHandler<V
     }
 
     @Override
-    public void finishGraph( Graph<V, E> graph )
+    public void finishGraph( G graph )
     {
         vertices.add( startVisit );
 

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/BaseGraphVisitHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/BaseGraphVisitHandler.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/BaseGraphVisitHandler.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/BaseGraphVisitHandler.java Mon Jan 30 13:03:31 2012
@@ -29,14 +29,14 @@ import org.apache.commons.graph.Vertex;
  * @param <V> the Graph vertices type
  * @param <E> the Graph edges type
  */
-public class BaseGraphVisitHandler<V extends Vertex, E extends Edge>
-    implements GraphVisitHandler<V, E>
+public class BaseGraphVisitHandler<V extends Vertex, E extends Edge, G extends Graph<V, E>, O>
+    implements GraphVisitHandler<V, E, G, O>
 {
 
     /**
      * {@inheritDoc}
      */
-    public void discoverGraph( Graph<V, E> graph )
+    public void discoverGraph( G graph )
     {
         // do nothing
     }
@@ -80,9 +80,17 @@ public class BaseGraphVisitHandler<V ext
     /**
      * {@inheritDoc}
      */
-    public void finishGraph( Graph<V, E> graph )
+    public void finishGraph( G graph )
     {
         // do nothing
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public O onCompleted()
+    {
+        return null;
+    }
+
 }

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/DefaultVisitAlgorithmsSelector.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/DefaultVisitAlgorithmsSelector.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/DefaultVisitAlgorithmsSelector.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/DefaultVisitAlgorithmsSelector.java Mon Jan 30 13:03:31 2012
@@ -59,9 +59,7 @@ final class DefaultVisitAlgorithmsSelect
      */
     public Graph<V, E> applyingBreadthFirstSearch()
     {
-        VisitGraphBuilder<V, E> visitGraphBuilder = new VisitGraphBuilder<V, E>();
-        applyingBreadthFirstSearch( visitGraphBuilder );
-        return visitGraphBuilder.getVisitGraph();
+        return applyingBreadthFirstSearch( new VisitGraphBuilder<V, E, G>() );
     }
 
     /**
@@ -69,15 +67,13 @@ final class DefaultVisitAlgorithmsSelect
      */
     public Graph<V, E> applyingDepthFirstSearch()
     {
-        VisitGraphBuilder<V, E> visitGraphBuilder = new VisitGraphBuilder<V, E>();
-        applyingDepthFirstSearch( visitGraphBuilder );
-        return visitGraphBuilder.getVisitGraph();
+        return applyingDepthFirstSearch( new VisitGraphBuilder<V, E, G>() );
     }
 
     /**
      * {@inheritDoc}
      */
-    public void applyingBreadthFirstSearch( GraphVisitHandler<V, E> handler )
+    public <O> O applyingBreadthFirstSearch( GraphVisitHandler<V, E, G, O> handler )
     {
         handler = checkNotNull( handler, "Graph visitor handler can not be null." );
 
@@ -128,12 +124,14 @@ final class DefaultVisitAlgorithmsSelect
         }
 
         handler.finishGraph( graph );
+
+        return handler.onCompleted();
     }
 
     /**
      * {@inheritDoc}
      */
-    public void applyingDepthFirstSearch( GraphVisitHandler<V, E> handler )
+    public <O> O applyingDepthFirstSearch( GraphVisitHandler<V, E, G, O> handler )
     {
         handler = checkNotNull( handler, "Graph visitor handler can not be null." );
 
@@ -182,6 +180,8 @@ final class DefaultVisitAlgorithmsSelect
         }
 
         handler.finishGraph( graph );
+
+        return handler.onCompleted();
     }
 
 }

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/GraphVisitHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/GraphVisitHandler.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/GraphVisitHandler.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/GraphVisitHandler.java Mon Jan 30 13:03:31 2012
@@ -27,13 +27,13 @@ import org.apache.commons.graph.Vertex;
  * A {@link GraphVisitHandler} controls the execution of breadth-first and depth-first search
  * algorithms in {@link Visit}.
  */
-public interface GraphVisitHandler<V extends Vertex, E extends Edge>
+public interface GraphVisitHandler<V extends Vertex, E extends Edge, G extends Graph<V, E>, O>
 {
 
     /**
      * Called at the beginning of breadth-first and depth-first search.
      */
-    void discoverGraph( Graph<V, E> graph );
+    void discoverGraph( G graph );
 
     /**
      * Performs operations on the input {@link Vertex} and checks if it should be expanded
@@ -66,6 +66,13 @@ public interface GraphVisitHandler<V ext
     /**
      * Called upon termination of the search algorithm.
      */
-    void finishGraph( Graph<V, E> graph );
+    void finishGraph( G graph );
+
+    /**
+     * Invoked once the visit is finished.
+     *
+     * @return Value that will be returned by the visit
+     */
+    O onCompleted();
 
 }

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitAlgorithmsSelector.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitAlgorithmsSelector.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitAlgorithmsSelector.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitAlgorithmsSelector.java Mon Jan 30 13:03:31 2012
@@ -52,13 +52,13 @@ public interface VisitAlgorithmsSelector
      *
      * @param handler the handler intercepts visit actions
      */
-    void applyingBreadthFirstSearch( GraphVisitHandler<V, E> handler );
+    <O> O applyingBreadthFirstSearch( GraphVisitHandler<V, E, G, O> handler );
 
     /**
      * Depth-first search algorithm implementation.
      *
      * @param handler the handler intercepts visit actions
      */
-    void applyingDepthFirstSearch( GraphVisitHandler<V, E> handler );
+    <O> O applyingDepthFirstSearch( GraphVisitHandler<V, E, G, O> handler );
 
 }

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitGraphBuilder.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitGraphBuilder.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitGraphBuilder.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/visit/VisitGraphBuilder.java Mon Jan 30 13:03:31 2012
@@ -33,8 +33,8 @@ import org.apache.commons.graph.model.Un
  * @param <V> the Graph vertices type.
  * @param <E> the Graph edges type.
  */
-final class VisitGraphBuilder<V extends Vertex, E extends Edge>
-    extends BaseGraphVisitHandler<V, E>
+final class VisitGraphBuilder<V extends Vertex, E extends Edge, G extends Graph<V, E>>
+    extends BaseGraphVisitHandler<V, E, G, Graph<V, E>>
 {
 
     private BaseMutableGraph<V, E> visitGraph;
@@ -43,7 +43,7 @@ final class VisitGraphBuilder<V extends 
      * {@inheritDoc}
      */
     @Override
-    public void discoverGraph( Graph<V, E> graph )
+    public void discoverGraph( G graph )
     {
         if ( graph instanceof DirectedGraph )
         {
@@ -71,11 +71,10 @@ final class VisitGraphBuilder<V extends 
     }
 
     /**
-     * Returns the produced visit Graph.
-     *
-     * @return the produced visit Graph.
+     * {@inheritDoc}
      */
-    public Graph<V, E> getVisitGraph()
+    @Override
+    public Graph<V, E> onCompleted()
     {
         return visitGraph;
     }

Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/NodeSequenceVisitor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/NodeSequenceVisitor.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/NodeSequenceVisitor.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/NodeSequenceVisitor.java Mon Jan 30 13:03:31 2012
@@ -24,31 +24,31 @@ import static java.util.Collections.unmo
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.graph.Edge;
-import org.apache.commons.graph.Vertex;
+import org.apache.commons.graph.model.BaseLabeledEdge;
+import org.apache.commons.graph.model.BaseLabeledVertex;
+import org.apache.commons.graph.model.UndirectedMutableGraph;
 
-public final class NodeSequenceVisitor<V extends Vertex, E extends Edge>
-    extends BaseGraphVisitHandler<V, E>
+public final class NodeSequenceVisitor
+    extends BaseGraphVisitHandler<BaseLabeledVertex, BaseLabeledEdge, UndirectedMutableGraph<BaseLabeledVertex, BaseLabeledEdge>, List<BaseLabeledVertex>>
 {
 
-    private final List<V> vertices = new ArrayList<V>();
+    private final List<BaseLabeledVertex> vertices = new ArrayList<BaseLabeledVertex>();
 
     /**
      * {@inheritDoc}
      */
     @Override
-    public boolean discoverVertex( V vertex )
+    public boolean discoverVertex( BaseLabeledVertex vertex )
     {
         vertices.add( vertex );
         return true;
     }
 
     /**
-     * 
-     *
-     * @return
+     * {@inheritDoc}
      */
-    public List<V> getVertices()
+    @Override
+    public List<BaseLabeledVertex> onCompleted()
     {
         return unmodifiableList( vertices );
     }

Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/VisitTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/VisitTestCase.java?rev=1237632&r1=1237631&r2=1237632&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/VisitTestCase.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/visit/VisitTestCase.java Mon Jan 30 13:03:31 2012
@@ -177,12 +177,8 @@ public final class VisitTestCase
 
         // actual node set
 
-        NodeSequenceVisitor<BaseLabeledVertex, BaseLabeledEdge> visitor =
-            new NodeSequenceVisitor<BaseLabeledVertex, BaseLabeledEdge>();
-
-        visit( input ).from( new BaseLabeledVertex( "S" ) ).applyingDepthFirstSearch( visitor );
-
-        final List<BaseLabeledVertex> actual = visitor.getVertices();
+        final List<BaseLabeledVertex> actual =
+            visit( input ).from( new BaseLabeledVertex( "S" ) ).applyingDepthFirstSearch( new NodeSequenceVisitor() );
 
         // assertion