Package groovy.util

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

      • 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 Detail

      • 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)
      • firePropertyRemovedEvent

        protected void firePropertyRemovedEvent​(java.lang.Object key,
                                                java.lang.Object value)
      • 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)