public class ObservableSet<E>
extends Object
implements Set
Set decorator that will trigger PropertyChangeEvents when a value changes.
An optional Closure may be specified and will work as a filter, if it returns true the property
will trigger an event (if the value indeed changed), otherwise it won't. The Closure may receive
1 or 2 parameters, the single one being the value, the other one both the key and value, for
example:
// skip all properties whose value is a closure
def set = new ObservableSet( {!(it instanceof Closure)} )
<p/>
// skip all properties whose name matches a regex
def set = new ObservableSet( { name, value -> !(name =˜ /[A-Z+]/) } )
The current implementation will trigger specialized events in the following scenarios, you need
not register a different listener as those events extend from PropertyChangeEvent
Bound properties
| Modifiers | Name | Description |
|---|---|---|
enum |
ObservableSet.ChangeType |
Enumerates the specialized set change events. |
static class |
ObservableSet.ElementAddedEvent |
Event fired when one element is added. |
static class |
ObservableSet.ElementClearedEvent |
Event fired when the set is cleared. |
static class |
ObservableSet.ElementEvent |
Base event type for observable set content changes. |
static class |
ObservableSet.ElementRemovedEvent |
Event fired when one element is removed. |
static class |
ObservableSet.MultiElementAddedEvent |
Event fired when multiple elements are added. |
static class |
ObservableSet.MultiElementRemovedEvent |
Event fired when multiple elements are removed. |
protected class |
ObservableSet.ObservableIterator |
Iterator wrapper that reports removals as observable set events. |
| Modifiers | Name | Description |
|---|---|---|
static String |
CONTENT_PROPERTY |
Bound property name for set content changes. |
static String |
SIZE_PROPERTY |
Bound property name for set size changes. |
| Constructor and description |
|---|
ObservableSet()Creates an observable set backed by a HashSet. |
ObservableSet(Set<E> delegate)Creates an observable set backed by the supplied delegate. |
ObservableSet(Closure test)Creates an observable set backed by a HashSet. |
ObservableSet(Set<E> delegate, Closure test)Creates an observable set backed by the supplied delegate. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public boolean |
add(E e){@inheritDoc} |
|
public boolean |
addAll(Collection<? extends E> c){@inheritDoc} |
|
public void |
addPropertyChangeListener(PropertyChangeListener listener)Registers a listener for all observable set events. |
|
public void |
addPropertyChangeListener(String propertyName, PropertyChangeListener listener)Registers a listener for a named bound property. |
|
public void |
clear(){@inheritDoc} |
|
public boolean |
contains(Object o){@inheritDoc} |
|
public boolean |
containsAll(Collection<?> objects){@inheritDoc} |
|
protected void |
fireElementAddedEvent(Object element)Fires a single-element added event. |
|
protected void |
fireElementClearedEvent(List values)Fires a cleared event containing removed values. |
|
protected void |
fireElementEvent(ObservableSet.ElementEvent event)Publishes an element event to registered listeners. |
|
protected void |
fireElementRemovedEvent(Object element)Fires a single-element removed event. |
|
protected void |
fireMultiElementAddedEvent(List values)Fires a multi-element added event. |
|
protected void |
fireMultiElementRemovedEvent(List values)Fires a multi-element removed event. |
|
protected void |
fireSizeChangedEvent(int oldValue, int newValue)Fires the bound size change event. |
|
public Set<E> |
getContent()Returns an unmodifiable snapshot view of the backing set. |
|
protected Set<E> |
getDelegateSet()Returns the mutable backing set. |
|
public PropertyChangeListener[] |
getPropertyChangeListeners()Returns listeners registered for all properties. |
|
public PropertyChangeListener[] |
getPropertyChangeListeners(String propertyName)Returns listeners registered for a named property. |
|
protected Closure |
getTest()Returns the optional event filter closure. |
|
public boolean |
hasListeners(String propertyName)Reports whether listeners are registered for a named property. |
|
public boolean |
isEmpty(){@inheritDoc} |
|
public Iterator<E> |
iterator(){@inheritDoc} |
|
public boolean |
remove(Object o){@inheritDoc} |
|
public boolean |
removeAll(Collection<?> c){@inheritDoc} |
|
public void |
removePropertyChangeListener(PropertyChangeListener listener)Removes a listener registered for all properties. |
|
public void |
removePropertyChangeListener(String propertyName, PropertyChangeListener listener)Removes a listener registered for a named property. |
|
public boolean |
retainAll(Collection<?> c){@inheritDoc} |
|
public int |
size(){@inheritDoc} |
|
public Object[] |
toArray(){@inheritDoc} |
<T> |
public T[] |
toArray(T[] ts){@inheritDoc} |
Bound property name for set content changes.
Bound property name for set size changes.
Creates an observable set backed by a HashSet.
Creates an observable set backed by the supplied delegate.
delegate - the backing setCreates an observable set backed by a HashSet.
test - optional event filter{@inheritDoc}
{@inheritDoc}
Registers a listener for all observable set events.
listener - the listener to addRegisters a listener for a named bound property.
propertyName - the property to observelistener - the listener to add{@inheritDoc}
{@inheritDoc}
{@inheritDoc}
Fires a single-element added event.
Fires a cleared event containing removed values.
Publishes an element event to registered listeners.
Fires a single-element removed event.
Fires a multi-element added event.
Fires a multi-element removed event.
Fires the bound size change event.
Returns an unmodifiable snapshot view of the backing set.
Returns the mutable backing set.
Returns listeners registered for all properties.
Returns listeners registered for a named property.
propertyName - the observed property nameReturns the optional event filter closure.
nullReports whether listeners are registered for a named property.
propertyName - the property name to inspecttrue if listeners are registered{@inheritDoc}
{@inheritDoc}
{@inheritDoc}
{@inheritDoc}
Removes a listener registered for all properties.
listener - the listener to removeRemoves a listener registered for a named property.
propertyName - the observed property namelistener - the listener to remove{@inheritDoc}
{@inheritDoc}
{@inheritDoc}
{@inheritDoc}
Copyright © 2003-2026 The Apache Software Foundation. All rights reserved.