2.10.1: 2009-03-24

net.sf.basedb.core.signal
Class DelegatingSignalHandler

java.lang.Object
  extended by net.sf.basedb.core.signal.AbstractSignalHandler
      extended by net.sf.basedb.core.signal.DelegatingSignalHandler
All Implemented Interfaces:
SignalHandler

public class DelegatingSignalHandler
extends AbstractSignalHandler

A signal handler implementation that can delegate to other signal handlers, depending on which signal it receives. Multiple signal handlers may be registered for each signal. The order in which they are called is not specified, but it is probably different from the order they are registered.

Version:
2.6
Author:
nicklas
Last modified
$Date: 2008-09-11 22:09:17 +0200 (Thu, 11 Sep 2008) $

Field Summary
private  Map<Signal,Set<SignalHandler>> handlers
          Holds the registered signal handlers.
private static Logger logger
          Log signals processing.
 
Constructor Summary
DelegatingSignalHandler()
          Create a new delegating signal handler.
 
Method Summary
 Collection<Signal> getSupportedSignals()
          Get all signals that are supported by this handler.
 void handleSignal(Signal signal)
          Handler the given signal by invoking SignalHandler.handleSignal(Signal) on each registered signal handler.
 void registerSignalHandler(SignalHandler handler)
          Register a signal handler to delegate to.
 boolean supports(Signal signal)
          Check if at least one handler has been registered for the given signal.
 void unregisterSignalHandler(SignalHandler handler)
          Unregister a signal handler.
 
Methods inherited from class net.sf.basedb.core.signal.AbstractSignalHandler
addSignal, removeSignal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

private static final Logger logger
Log signals processing.


handlers

private Map<Signal,Set<SignalHandler>> handlers
Holds the registered signal handlers.

Constructor Detail

DelegatingSignalHandler

public DelegatingSignalHandler()
Create a new delegating signal handler. Signal handlers to delegate to should be registered with registerSignalHandler(SignalHandler).

Method Detail

getSupportedSignals

public Collection<Signal> getSupportedSignals()
Description copied from interface: SignalHandler
Get all signals that are supported by this handler.

Specified by:
getSupportedSignals in interface SignalHandler
Overrides:
getSupportedSignals in class AbstractSignalHandler
Returns:
A collection containing all signals that have at least one registered handler

supports

public boolean supports(Signal signal)
Check if at least one handler has been registered for the given signal.

Specified by:
supports in interface SignalHandler
Overrides:
supports in class AbstractSignalHandler
Parameters:
signal - The signal to check
Returns:
TRUE if the signal is supported, FALSE otherwise

handleSignal

public void handleSignal(Signal signal)
Handler the given signal by invoking SignalHandler.handleSignal(Signal) on each registered signal handler. The order of the invokation is not predictable.

Parameters:
signal - The signal to handle
Throws:
UnsupportedSignalException - If no handler has been registered for the given signal

registerSignalHandler

public void registerSignalHandler(SignalHandler handler)
Register a signal handler to delegate to. The handler is registered for all signals it supports.

Parameters:
handler - The handler to register

unregisterSignalHandler

public void unregisterSignalHandler(SignalHandler handler)
Unregister a signal handler.

Parameters:
handler - The handler to unregister

2.10.1: 2009-03-24