/* * class: ChainableRecordListener * * Version $Id: ChainableRecordListenerDecorator.java 8584 2006-08-10 23:06:37Z duns $ * * Date: February 19 2003 * * (c) 2003 LBNL */ package org.freehep.record.loop.event; /** This class decorates an <code>{@link RecordListener}</code> object so that the methods of another <code>RecordListener</code> object are executed in succession to its own method, thus creating a chain of listeners. * * @version $Id: ChainableRecordListenerDecorator.java 8584 2006-08-10 23:06:37Z duns $ * @author patton */ public class ChainableRecordListenerDecorator extends ChainableRecordAdapter { // public static final member data // protected static final member data // static final member data // private static final member data // private static member data // private instance member data /** The RecordListener that is decorated by this object. */ private RecordListener decorated; // constructors /** * Create an instance of this class. * Default constructor is declared, but private, to stop accidental * creation of an instance of the class. */ private ChainableRecordListenerDecorator() { } /** * Create an instance of this class that decorates the specified object. * * @param decorated the RecordListener to be decorated. * @throws IllegalArgumentException if decorated is null. */ public ChainableRecordListenerDecorator(RecordListener decorated) { if (null == decorated) { throw new IllegalArgumentException( "Must specify an RecordListener to be decorated."); } this.decorated = decorated; } // instance member function (alphabetic) public void configure(ConfigurationEvent event) { decorated.configure(event); super.configure(event); } public void finish(RecordEvent event) { decorated.finish(event); super.finish(event); } /** * Returns the RecordListener that this object decorates. * * @return the RecordListener that this object decorates. */ public RecordListener getDecoratedListener() { return decorated; } public void recordSupplied(RecordSuppliedEvent event) { decorated.recordSupplied(event); super.recordSupplied(event); } public void reconfigure(ConfigurationEvent event) { decorated.reconfigure(event); super.reconfigure(event); } /** * Tells this object to prepare for a new set of {@link #recordSupplied} * calls using the its existing configuration. * * @param event the RecordEvent for this event. * @throws IllegalStateException if the listener is new and has not been * handed at least on record already. */ public void resume(RecordEvent event) { decorated.resume(event); super.resume(event); } public void suspend(RecordEvent event) { decorated.suspend(event); super.suspend(event); } // static member functions (alphabetic) // Description of this object. // public String toString() {} // public static void main(String args[]) {} }