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.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `ObservableMap.ChangeType` |
  `static class` | `ObservableMap.MultiPropertyEvent` |
  `static class` | `ObservableMap.PropertyAddedEvent` |
  `static class` | `ObservableMap.PropertyClearedEvent` |
  `static class` | `ObservableMap.PropertyEvent` |
  `static class` | `ObservableMap.PropertyRemovedEvent` |
  `static class` | `ObservableMap.PropertyUpdatedEvent` |

  ## Nested classes/interfaces inherited from interface java.util.Map

  `java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>`

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static java.lang.String` | `CLEARED_PROPERTY` |
  `static java.lang.String` | `CONTENT_PROPERTY` |
  `static java.lang.String` | `SIZE_PROPERTY` |

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `ObservableMap()` |
  `ObservableMap​(Closure test)` |
  `ObservableMap​(java.util.Map delegate)` |
  `ObservableMap​(java.util.Map delegate, Closure test)` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `addPropertyChangeListener​(java.beans.PropertyChangeListener listener)` |
  `void` | `addPropertyChangeListener​(java.lang.String propertyName, java.beans.PropertyChangeListener listener)` |
  `void` | `clear()` |
  `boolean` | `containsKey​(java.lang.Object key)` |
  `boolean` | `containsValue​(java.lang.Object value)` |
  `java.util.Set` | `entrySet()` |
  `boolean` | `equals​(java.lang.Object o)` |
  `protected void` | `fireMultiPropertyEvent​(ObservableMap.PropertyEvent[] events)` |
  `protected void` | `fireMultiPropertyEvent​(java.util.List<ObservableMap.PropertyEvent> events)` |
  `protected void` | `firePropertyAddedEvent​(java.lang.Object key, java.lang.Object value)` |
  `protected void` | `firePropertyClearedEvent​(java.util.Map values)` |
  `protected void` | `firePropertyEvent​(ObservableMap.PropertyEvent event)` |
  `protected void` | `firePropertyRemovedEvent​(java.lang.Object key, java.lang.Object value)` |
  `protected void` | `firePropertyUpdatedEvent​(java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)` |
  `protected void` | `fireSizeChangedEvent​(int oldValue, int newValue)` |
  `java.lang.Object` | `get​(java.lang.Object key)` |
  `java.util.Map` | `getContent()` |
  `protected java.util.Map` | `getMapDelegate()` |
  `java.beans.PropertyChangeListener[]` | `getPropertyChangeListeners()` |
  `java.beans.PropertyChangeListener[]` | `getPropertyChangeListeners​(java.lang.String propertyName)` |
  `int` | `getSize()` |
  `protected Closure` | `getTest()` |
  `int` | `hashCode()` |
  `boolean` | `hasListeners​(java.lang.String propertyName)` |
  `boolean` | `isEmpty()` |
  `java.util.Set` | `keySet()` |
  `java.lang.Object` | `put​(java.lang.Object key, java.lang.Object value)` |
  `void` | `putAll​(java.util.Map map)` |
  `java.lang.Object` | `remove​(java.lang.Object key)` |
  `void` | `removePropertyChangeListener​(java.beans.PropertyChangeListener listener)` |
  `void` | `removePropertyChangeListener​(java.lang.String propertyName, java.beans.PropertyChangeListener listener)` |
  `int` | `size()` |
  `java.util.Collection` | `values()` |

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.util.Map

  `compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

- ## Field Details

  - ### SIZE_PROPERTY

    public static final java.lang.String SIZE_PROPERTY
    See Also:
      Constant Field Values

  - ### CONTENT_PROPERTY

    public static final java.lang.String CONTENT_PROPERTY
    See Also:
      Constant Field Values

  - ### CLEARED_PROPERTY

    public static final java.lang.String CLEARED_PROPERTY
    See Also:
      Constant Field Values

- ## 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)