Package groovy.util

Class 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.
    • Constructor Detail

      • ObservableMap

        public ObservableMap()
      • ObservableMap

        public ObservableMap​(Closure test)
      • ObservableMap

        public ObservableMap​(Map delegate)
      • ObservableMap

        public ObservableMap​(Map delegate,
                             Closure test)
    • Method Detail

      • getMapDelegate

        protected Map getMapDelegate()
      • getTest

        protected Closure getTest()
      • getContent

        public Map getContent()
      • firePropertyClearedEvent

        protected void firePropertyClearedEvent​(Map values)
      • firePropertyAddedEvent

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

        protected void firePropertyUpdatedEvent​(Object key,
                                                Object oldValue,
                                                Object newValue)
      • firePropertyRemovedEvent

        protected void firePropertyRemovedEvent​(Object key,
                                                Object value)
      • fireSizeChangedEvent

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

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

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

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

        public Set entrySet()
        Specified by:
        entrySet in interface Map
      • isEmpty

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

        public Set keySet()
        Specified by:
        keySet in interface Map
      • putAll

        public void putAll​(Map map)
        Specified by:
        putAll in interface Map
      • size

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

        public int getSize()
      • removePropertyChangeListener

        public void removePropertyChangeListener​(PropertyChangeListener listener)
      • hasListeners

        public boolean hasListeners​(String propertyName)