org.eclipse.emf.transaction
Class NotificationFilter

java.lang.Object
  extended by org.eclipse.emf.transaction.NotificationFilter
Direct Known Subclasses:
NotificationFilter.Custom

public abstract class NotificationFilter
extends Object

A filter that determines which Notifications will be passed to ResourceSetListeners. Filters can be combined using simple boolean operations.

The default filter for listeners that do not otherwise declare one is NOT_TOUCH.

Note that ResourceSetListeners never receive Notification.REMOVING_ADAPTER notifications because these are intended only to inform an adapter that it is being removed; they are not broadcast to all adapters of an object. Besides which, resource set listeners are not adapters.

Since the EMF Transaction 1.3 release, clients can implement arbitrary filter criteria by specializing the NotificationFilter.Custom class.

See Also:
ResourceSetListener, Notification

Nested Class Summary
static class NotificationFilter.Custom
          A custom notification filter, implementing user-defined selection criteria.
 
Field Summary
static NotificationFilter ANY
          As its name implies, this filter matches any notification.
static NotificationFilter NOT_TOUCH
          Matches only notifications that are not "touches."
static NotificationFilter READ
          Matches any notification that can occur during the normal course of a read-only transaction.
static NotificationFilter RESOURCE_LOADED
          A filter matching "resource loaded" events.
static NotificationFilter RESOURCE_UNLOADED
          A filter matching "resource unloaded" events.
 
Method Summary
 NotificationFilter and(NotificationFilter other)
          Creates a new filter combining me with another as a boolean conjunction.
static NotificationFilter createEventTypeFilter(int eventType)
          Creates a filter matching any notification of the specified type.
static NotificationFilter createFeatureFilter(Class<?> ownerType, int featureId)
          Creates a filter matching any notification from the specified feature.
static NotificationFilter createFeatureFilter(EClassifier ownerType, int featureId)
          Creates a filter matching any notification from the specified feature.
static NotificationFilter createFeatureFilter(EStructuralFeature feature)
          Creates a filter matching any notification from the specified feature.
static NotificationFilter createNotifierFilter(Object notifier)
          Creates a filter matching any notification from the specified notifier.
static NotificationFilter createNotifierTypeFilter(Class<?> type)
          Creates a filter matching notifications from any instance of the specified type.
static NotificationFilter createNotifierTypeFilter(EClassifier type)
          Creates a filter matching notifications from any instance of the specified type.
static NotificationFilter createResourceContentTypeFilter(String contentType)
          Creates a filter matches any notification from a resource of the specified content type.
abstract  boolean matches(Notification notification)
          Determines whether a notification matches my filtering criteria.
 NotificationFilter negated()
          Creates a new filter that is the boolean negation of me.
 NotificationFilter or(NotificationFilter other)
          Creates a new filter combining me with another as a boolean disjunction.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ANY

public static final NotificationFilter ANY
As its name implies, this filter matches any notification.


NOT_TOUCH

public static final NotificationFilter NOT_TOUCH
Matches only notifications that are not "touches."

See Also:
Notification.isTouch()

READ

public static final NotificationFilter READ
Matches any notification that can occur during the normal course of a read-only transaction. These include:


RESOURCE_LOADED

public static final NotificationFilter RESOURCE_LOADED
A filter matching "resource loaded" events.


RESOURCE_UNLOADED

public static final NotificationFilter RESOURCE_UNLOADED
A filter matching "resource unloaded" events.

Method Detail

createResourceContentTypeFilter

public static NotificationFilter createResourceContentTypeFilter(String contentType)
Creates a filter matches any notification from a resource of the specified content type. Because the determination of a resource's content type is costly, it is cached on the resource via an adapter and is cleared on any change to the resource's contents or other properties.

Parameters:
contentType - the content type identifier to match
Returns:
the filter
Throws:
IllegalArgumentException - if the specified content type is not defined
See Also:
IContentType

createNotifierFilter

public static NotificationFilter createNotifierFilter(Object notifier)
Creates a filter matching any notification from the specified notifier.

Parameters:
notifier - a notifier (usually an EObject, Resource, or ResourceSet
Returns:
the filter

createEventTypeFilter

public static NotificationFilter createEventTypeFilter(int eventType)
Creates a filter matching any notification of the specified type.

Parameters:
eventType - the notification type (as defined by the Notification interface)
Returns:
the filter

createFeatureFilter

public static NotificationFilter createFeatureFilter(EStructuralFeature feature)
Creates a filter matching any notification from the specified feature.

Parameters:
feature - a structural feature meta-object
Returns:
the filter

createFeatureFilter

public static NotificationFilter createFeatureFilter(Class<?> ownerType,
                                                     int featureId)
Creates a filter matching any notification from the specified feature. This variant is useful for notifiers that are not modeled via Ecore.

Parameters:
ownerType - the notifier type as a Java class or interface
featureId - the feature's numeric ID
Returns:
the filter

createFeatureFilter

public static NotificationFilter createFeatureFilter(EClassifier ownerType,
                                                     int featureId)
Creates a filter matching any notification from the specified feature. This variant is useful for notifiers that are not modeled as EClasses. For example, this supports the features of the Resource data type.

Parameters:
ownerType - the notifier type as an Ecore classifier
featureId - the feature's numeric ID
Returns:
the filter

createNotifierTypeFilter

public static NotificationFilter createNotifierTypeFilter(Class<?> type)
Creates a filter matching notifications from any instance of the specified type. This variant is useful for notifiers that are not modeled via Ecore.

Parameters:
type - the notifier type as a Java class or interface
Returns:
the filter

createNotifierTypeFilter

public static NotificationFilter createNotifierTypeFilter(EClassifier type)
Creates a filter matching notifications from any instance of the specified type. This variant is useful for notifiers that are modeled via Ecore.

Parameters:
type - the notifier type as an Ecore classifier
Returns:
the filter

and

public final NotificationFilter and(NotificationFilter other)
Creates a new filter combining me with another as a boolean conjunction. The "and" operation short-circuits; the other filter is not consulted when I (the first filter) do not match.

Parameters:
other - another filter (must not be null)
Returns:
a new "and" filter

or

public final NotificationFilter or(NotificationFilter other)
Creates a new filter combining me with another as a boolean disjunction. The "or" operation short-circuits; the other filter is not consulted when I (the first filter) match.

Parameters:
other - another filter (must not be null)
Returns:
a new "or" filter

negated

public final NotificationFilter negated()
Creates a new filter that is the boolean negation of me.

Returns:
the opposite of me

matches

public abstract boolean matches(Notification notification)
Determines whether a notification matches my filtering criteria. Notifications that match are passed to the listener for which I am filtering.

Parameters:
notification - a notification
Returns:
true if the notification should be passed to my listener; false, otherwise

Copyright 2002, 2007 IBM Corporation and others.
All Rights Reserved.