Package groovy.util

Class ObservableMap

java.lang.Object
groovy.util.ObservableMap
All Implemented Interfaces:
Map

public class ObservableMap
extends Object
implements Map
Map 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 map = new ObservableMap( {!(it instanceof Closure)} )

 // skip all properties whose name matches a regex
 def map = new ObservableMap( { 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
  • ObservableMap.PropertyAddedEvent - a new property is added to the map
  • ObservableMap.PropertyRemovedEvent - a property is removed from the map
  • ObservableMap.PropertyUpdatedEvent - a property changes value (same as regular PropertyChangeEvent)
  • ObservableMap.PropertyClearedEvent - all properties have been removed from the map
  • ObservableMap.MultiPropertyEvent - triggered by calling map.putAll(), contains Added|Updated events

Bound properties

  • content - read-only.
  • size - read-only.