| NotificationFilterSupport.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package javax.management;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Vector;
/**
* An implementation of the {@link NotificationFilter} interface.<p>
*
* It filters on the notification type. It Maintains a list of enabled
* notification types. By default no notifications are enabled.<p>
*
* The enabled types are prefixes. That is a notification is enabled if
* it starts with an enabled string.
*
* @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
* @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>.
* @version $Revision: 1.9.6.1 $
*/
public class NotificationFilterSupport
implements NotificationFilter, Serializable
{
// Constants ---------------------------------------------------
private static final long serialVersionUID = 6579080007561786969L;
// Attributes --------------------------------------------------
/**
* Enabled notification types.
*/
private Vector enabledTypes;
// Static ------------------------------------------------------
// Constructors ------------------------------------------------
/**
* Create a filter that filters out all notification types.
*/
public NotificationFilterSupport()
{
enabledTypes = new Vector();
}
// Public ------------------------------------------------------
/**
* Disable all notification types. Rejects all notifications.
*/
public synchronized void disableAllTypes()
{
enabledTypes = new Vector();
}
/**
* Disable a notification type.
*
* @param type the notification type to disable.
*/
public synchronized void disableType(String type)
{
// Null won't be in the list anyway.
enabledTypes.removeElement(type);
}
/**
* Enable a notification type.
*
* @param type the notification type to enable.
* @exception IllegalArgumentException for a null type
*/
public synchronized void enableType(String type)
throws IllegalArgumentException
{
if (type == null)
throw new IllegalArgumentException("null notification type");
if (enabledTypes.contains(type) == false)
enabledTypes.addElement(type);
}
/**
* Get all the enabled notification types.<p>
*
* Returns a vector of enabled notification type.<br>
* An empty vector means all types disabled.
*
* @return the vector of enabled types.
*/
public synchronized Vector getEnabledTypes()
{
return (Vector) enabledTypes.clone();
}
/**
* @return human readable string.
*/
public String toString()
{
StringBuffer sb = new StringBuffer(100);
sb.append(getClass().getName()).append(':');
sb.append(" enabledTypes=").append(getEnabledTypes());
return sb.toString();
}
// NotificationFilter implementation ---------------------------
/**
* Test to see whether this notification is enabled
*
* @param notification the notification to filter
* @return true when the notification should be sent, false otherwise
* @exception IllegalArgumentException for null notification.
*/
public synchronized boolean isNotificationEnabled(Notification notification)
{
if (notification == null)
throw new IllegalArgumentException("null notification");
// Is it enabled?
String notificationType = notification.getType();
for (Enumeration e = enabledTypes.elements(); e.hasMoreElements();)
{
String type = (String) e.nextElement();
if (notificationType.startsWith(type))
return true;
}
return false;
}
// Private -----------------------------------------------------
}
| NotificationFilterSupport.java |