public WeightedPath buildPath()

in src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java [106:142]


    public WeightedPath<V, WE, W> buildPath( V source, V touch, V target, PredecessorsList<V, WE, W> backwardsList ) {
        InMemoryWeightedPath<V, WE, W> path = new InMemoryWeightedPath<V, WE, W>( source, target, weightOperations, weightedEdges );

        V vertex = touch;
        while ( !source.equals( vertex ) )
        {
            V predecessor = predecessors.get( vertex );
            if ( predecessor == null )
            {
                throw new PathNotFoundException( "Path from '%s' to '%s' doesn't exist", source, target );
            }
            WE edge = graph.getEdge( predecessor, vertex );

            path.addConnectionInHead(predecessor, edge, vertex);

            vertex = predecessor;
        }

        vertex = touch;

        while ( !target.equals( vertex ) )
        {
            // 'predecessor' is actually a successor.
            V predecessor = backwardsList.predecessors.get( vertex );
            if ( predecessor == null )
            {
                throw new PathNotFoundException( "Path from '%s' to '%s' doesn't exist", source, target );
            }
            WE edge = graph.getEdge( vertex, predecessor );

            path.addConnectionInTail( vertex, edge, predecessor );

            vertex = predecessor;
        }

        return path;
    }