Package org.apache.uima.pear.util

# Class MessageRouter

java.lang.Object
org.apache.uima.pear.util.MessageRouter

All Implemented Interfaces:
  `Runnable`

public class MessageRouter extends Object implements Runnable
The `MessageRouter` class facilitates intra-process message routing. It provides application classes with convenient access to the message channels via the `PrintWriter` class. The `MessageRouter` class, by default, defines 2 standard message channels - for standard output and standard error messages. Applications can publish their standard output and standard error messages using the `outWriter()` and `errWriter()` methods correspondingly.
The `MessageRouter` class distributes the messages to a number of message channel listeners, added by applications. Standard message channel listeners should implement the `MessageRouter.StdChannelListener` interface. The `MessageRouter` class collects all published messages. When a new message channel listener is added, it receives all collected messages from the message history.

The `MessageRouter` code runs in a separate thread that should be started and terminated by applications. Applications should use the `start()` and `terminate()` methods to start and terminate the `MessageRouter` thread correspondingly.
For terminology see the Enterprise Integration Patterns book.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static interface`
  `MessageRouter.StdChannelListener`
  The `StdChannelListener` interface declares methods that should be implemented by each standard message channel listener.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MessageRouter()`
  Default constructor for the `MessageRouter` class.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addChannelListener(MessageRouter.StdChannelListener listener)`
  Adds a given object, implementing the `StdChannelListener` interface, to the list of standard message channel listeners.
  `int`
  `countStdChannelListeners()`
  `PrintWriter`
  `errWriter()`
  `boolean`
  `isRunning()`
  `PrintWriter`
  `outWriter()`
  `void`
  `removeChannelListener(MessageRouter.StdChannelListener listener)`
  Removes a given `StdChannelListener` object from the list of standard channel listeners.
  `void`
  `run()`
  Implements the main service method that runs in a separate thread.
  `void`
  `start()`
  Starts the main service thread.
  `void`
  `terminate()`
  Terminates the main service thread.

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

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

- ## Constructor Details

  - ### MessageRouter

    public MessageRouter()
    Default constructor for the `MessageRouter` class. This constructor allocates all resources, but does not start the main service thread. Applications should start the `MessageRouter` thread using the `start()` method.

- ## Method Details

  - ### addChannelListener

    public void addChannelListener(MessageRouter.StdChannelListener listener)
    Adds a given object, implementing the `StdChannelListener` interface, to the list of standard message channel listeners. Sends to the new listener all previously collected messages for this channel.
    Parameters:
      `listener` - The given new standard message channel listener.

  - ### countStdChannelListeners

    public int countStdChannelListeners()
    Returns:
      Current number of standard channel listeners.

  - ### isRunning

    public boolean isRunning()
    Returns:
      `true`, if the router thread is running, `false` otherwise.

  - ### removeChannelListener

    public void removeChannelListener(MessageRouter.StdChannelListener listener)
    Removes a given `StdChannelListener` object from the list of standard channel listeners.
    Parameters:
      `listener` - The `StdChannelListener` object to be removed from the list.

  - ### run

    public void run()
    Implements the main service method that runs in a separate thread.
    Specified by:
      `run` in interface `Runnable`

  - ### errWriter

    public PrintWriter errWriter()
    Returns:
      The standard error message channel writer.

  - ### outWriter

    public PrintWriter outWriter()
    Returns:
      The standard output message channel writer.

  - ### start

    public void start()
    Starts the main service thread.

  - ### terminate

    public void terminate()
    Terminates the main service thread.