org.apache.uima.pear.util
Class MessageRouter

java.lang.Object
  extended by 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
static interface MessageRouter.StdChannelListener
          The StdChannelListener interface declares methods that should be implemented by each standard message channel listener.
 
Constructor Summary
MessageRouter()
          Default constructor for the MessageRouter class.
 
Method Summary
 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 Detail

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 Detail

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.



Copyright © 2010 The Apache Software Foundation. All Rights Reserved.