FileDocCategorySizeDatePackage
BaseAttributeFilter.javaAPI DocApache Tomcat 6.0.144611Fri Jul 20 04:20:32 BST 2007org.apache.tomcat.util.modeler

BaseAttributeFilter

public class BaseAttributeFilter extends Object implements NotificationFilter

Implementation of NotificationFilter for attribute change notifications. This class is used by BaseModelMBean to construct attribute change notification event filters when a filter is not supplied by the application.

author
Craig R. McClanahan
version
$Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $

Fields Summary
private HashSet
names
The set of attribute names that are accepted by this filter. If this list is empty, all attribute names are accepted.
Constructors Summary
public BaseAttributeFilter(String name)
Construct a new filter that accepts only the specified attribute name.

param
name Name of the attribute to be accepted by this filter, or null to accept all attribute names


        super();
        if (name != null)
            addAttribute(name);

    
Methods Summary
public voidaddAttribute(java.lang.String name)
Add a new attribute name to the set of names accepted by this filter.

param
name Name of the attribute to be accepted



    // --------------------------------------------------------- Public Methods


                                
        

        synchronized (names) {
            names.add(name);
        }

    
public voidclear()
Clear all accepted names from this filter, so that it will accept all attribute names.


        synchronized (names) {
            names.clear();
        }

    
public java.lang.String[]getNames()
Return the set of names that are accepted by this filter. If this filter accepts all attribute names, a zero length array will be returned.


        synchronized (names) {
            return ((String[]) names.toArray(new String[names.size()]));
        }

    
public booleanisNotificationEnabled(javax.management.Notification notification)

Test whether notification enabled for this event. Return true if:

  • This is an attribute change notification
  • Either the set of accepted names is empty (implying that all attribute names are of interest) or the set of accepted names includes the name of the attribute in this notification


        if (notification == null)
            return (false);
        if (!(notification instanceof AttributeChangeNotification))
            return (false);
        AttributeChangeNotification acn =
            (AttributeChangeNotification) notification;
        if (!AttributeChangeNotification.ATTRIBUTE_CHANGE.equals(acn.getType()))
            return (false);
        synchronized (names) {
            if (names.size() < 1)
                return (true);
            else
                return (names.contains(acn.getAttributeName()));
        }

    
public voidremoveAttribute(java.lang.String name)
Remove an attribute name from the set of names accepted by this filter.

param
name Name of the attribute to be removed


        synchronized (names) {
            names.remove(name);
        }