Package org.apache.struts2.config.providers

# Class DirectedGraph<T>

java.lang.Object
org.apache.struts2.config.providers.DirectedGraph<T>

All Implemented Interfaces:
  `Iterable<T>`

public final class DirectedGraph<T> extends Object implements Iterable<T>

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DirectedGraph()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addEdge(T start, T dest)`
  Given a start node, and a destination, adds an arc from the start node to the destination.
  `boolean`
  `addNode(T node)`
  Adds a new node to the graph.
  `boolean`
  `edgeExists(T start, T end)`
  Given two nodes in the graph, returns whether there is an edge from the first node to the second node.
  `Set<T>`
  `edgesFrom(T node)`
  Given a node in the graph, returns an immutable view of the edges leaving that node as a set of endpoints.
  `boolean`
  `isEmpty()`
  Returns whether the graph is empty.
  `Iterator<T>`
  `iterator()`
  Returns an iterator that can traverse the nodes in the graph.
  `void`
  `removeEdge(T start, T dest)`
  Removes the edge from start to dest from the graph.
  `int`
  `size()`
  Returns the number of nodes in the graph.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Constructor Details

  - ### DirectedGraph

    public DirectedGraph()

- ## Method Details

  - ### addNode

    public boolean addNode(T node)
    Adds a new node to the graph. If the node already exists, this function is a no-op.
    Parameters:
      `node` - The node to add.
    Returns:
      Whether or not the node was added.

  - ### addEdge

    public void addEdge(T start, T dest)
    Given a start node, and a destination, adds an arc from the start node to the destination. If an arc already exists, this operation is a no-op. If either endpoint does not exist in the graph, throws a NoSuchElementException.
    Parameters:
      `start` - The start node.
      `dest` - The destination node.
    Throws:
      `NoSuchElementException` - If either the start or destination nodes do not exist.

  - ### removeEdge

    public void removeEdge(T start, T dest)
    Removes the edge from start to dest from the graph. If the edge does not exist, this operation is a no-op. If either endpoint does not exist, this throws a NoSuchElementException.
    Parameters:
      `start` - The start node.
      `dest` - The destination node.
    Throws:
      `NoSuchElementException` - If either node is not in the graph.

  - ### edgeExists

    public boolean edgeExists(T start, T end)
    Given two nodes in the graph, returns whether there is an edge from the first node to the second node. If either node does not exist in the graph, throws a NoSuchElementException.
    Parameters:
      `start` - The start node.
      `end` - The destination node.
    Returns:
      Whether there is an edge from start to end.
    Throws:
      `NoSuchElementException` - If either endpoint does not exist.

  - ### edgesFrom

    public Set<T> edgesFrom(T node)
    Given a node in the graph, returns an immutable view of the edges leaving that node as a set of endpoints.
    Parameters:
      `node` - The node whose edges should be queried.
    Returns:
      An immutable view of the edges leaving that node.
    Throws:
      `NoSuchElementException` - If the node does not exist.

  - ### iterator

    public Iterator<T> iterator()
    Returns an iterator that can traverse the nodes in the graph.
    Specified by:
      `iterator` in interface `Iterable<T>`
    Returns:
      An iterator that traverses the nodes in the graph.

  - ### size

    public int size()
    Returns the number of nodes in the graph.
    Returns:
      The number of nodes in the graph.

  - ### isEmpty

    public boolean isEmpty()
    Returns whether the graph is empty.
    Returns:
      Whether the graph is empty.