Package groovy.util

Class ObservableMap

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

public class ObservableMap
extends java.lang.Object
implements java.util.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.
  • Field Details

  • Constructor Details

    • ObservableMap

      public ObservableMap()
    • ObservableMap

      public ObservableMap​(Closure test)
    • ObservableMap

      public ObservableMap​(java.util.Map delegate)
    • ObservableMap

      public ObservableMap​(java.util.Map delegate, Closure test)
  • Method Details

    • getMapDelegate

      protected java.util.Map getMapDelegate()
    • getTest

      protected Closure getTest()
    • getContent

      public java.util.Map getContent()
    • firePropertyClearedEvent

      protected void firePropertyClearedEvent​(java.util.Map values)
    • firePropertyAddedEvent

      protected void firePropertyAddedEvent​(java.lang.Object key, java.lang.Object value)
    • firePropertyUpdatedEvent

      protected void firePropertyUpdatedEvent​(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
    • fireMultiPropertyEvent

      protected void fireMultiPropertyEvent​(java.util.List<ObservableMap.PropertyEvent> events)
    • fireMultiPropertyEvent

      protected void fireMultiPropertyEvent​(ObservableMap.PropertyEvent[] events)
    • firePropertyRemovedEvent

      protected void firePropertyRemovedEvent​(java.lang.Object key, java.lang.Object value)
    • firePropertyEvent

      protected void firePropertyEvent​(ObservableMap.PropertyEvent event)
    • fireSizeChangedEvent

      protected void fireSizeChangedEvent​(int oldValue, int newValue)
    • clear

      public void clear()
      Specified by:
      clear in interface java.util.Map
    • containsKey

      public boolean containsKey​(java.lang.Object key)
      Specified by:
      containsKey in interface java.util.Map
    • containsValue

      public boolean containsValue​(java.lang.Object value)
      Specified by:
      containsValue in interface java.util.Map
    • entrySet

      public java.util.Set entrySet()
      Specified by:
      entrySet in interface java.util.Map
    • equals

      public boolean equals​(java.lang.Object o)
      Specified by:
      equals in interface java.util.Map
      Overrides:
      equals in class java.lang.Object
    • get

      public java.lang.Object get​(java.lang.Object key)
      Specified by:
      get in interface java.util.Map
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface java.util.Map
      Overrides:
      hashCode in class java.lang.Object
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface java.util.Map
    • keySet

      public java.util.Set keySet()
      Specified by:
      keySet in interface java.util.Map
    • put

      public java.lang.Object put​(java.lang.Object key, java.lang.Object value)
      Specified by:
      put in interface java.util.Map
    • putAll

      public void putAll​(java.util.Map map)
      Specified by:
      putAll in interface java.util.Map
    • remove

      public java.lang.Object remove​(java.lang.Object key)
      Specified by:
      remove in interface java.util.Map
    • size

      public int size()
      Specified by:
      size in interface java.util.Map
    • getSize

      public int getSize()
    • values

      public java.util.Collection values()
      Specified by:
      values in interface java.util.Map
    • addPropertyChangeListener

      public void addPropertyChangeListener​(java.beans.PropertyChangeListener listener)
    • addPropertyChangeListener

      public void addPropertyChangeListener​(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
    • getPropertyChangeListeners

      public java.beans.PropertyChangeListener[] getPropertyChangeListeners()
    • getPropertyChangeListeners

      public java.beans.PropertyChangeListener[] getPropertyChangeListeners​(java.lang.String propertyName)
    • removePropertyChangeListener

      public void removePropertyChangeListener​(java.beans.PropertyChangeListener listener)
    • removePropertyChangeListener

      public void removePropertyChangeListener​(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
    • hasListeners

      public boolean hasListeners​(java.lang.String propertyName)