Developers guide
122
F.1.7. AbstractSnmpTrapDaemon.java
/**
* $Id: AbstractSnmpTrapDaemon.java,v 1.3 2002/10/22 08:23:11 oliverm Exp $
* Author: Oliver Mather
*
*/
package apt.masterswitch.snmp;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Description:
* <p>
* This implements some of the common tasks required by
* full SnmpTrapDaemon implementations.
* <p>
* Specifically SnmpTrapListener event management code
* <p>
* @author $Author: oliverm $ <a href="mailto:oliverm@student.unsw.edu.au">Oliver Mather</a>
* @version $Revision: 1.3 $
*
*/
public abstract class AbstractSnmpTrapDaemon implements SnmpTrapDaemon {
private List listeners;
protected final Logger logger = Logger.getLogger( getClass().getName() );
public AbstractSnmpTrapDaemon() {
listeners = new ArrayList(5);
}
/**
* Register the {@link apt.masterswitch.snmp.SnmpTrapListener} object
* so that it receives events.
* <p>
* @param listener The object to receive events
* @see apt.masterswitch.snmp.SnmpTrapListener
*/
public void addSnmpTrapListener(SnmpTrapListener listener) {
if( listener == null ) {
throw new NullPointerException("Cannot addSnmpTrapListener(null)");
}
if( listener instanceof SnmpTrapListener ) {
if( listeners.contains(listener) ) {
logger.log(Level.INFO, "Cannot add SnmpTrapListener, it has already been added" );
} else {
listeners.add( listener );
}
} else {
logger.log(Level.WARNING, "Cannot add SnmpTrapListener, it is not of the correct instance type");
}
}
/**
* Removes the {@link apt.masterswitch.snmp.SnmpTrapListener} object so it no longer
* receives events.
* <p>
* @param listener The object to no longer receive events
* @see apt.masterswitch.snmp.SnmpTrapListener
*/
public void removeSnmpTrapListener(SnmpTrapListener listener) {
listeners.remove(listener); // if "listener" is not in the list
// the List collection will handle it
}










