Class PropertyMap

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,​java.lang.Object>
    Direct Known Subclasses:
    PropertyContainer, PropertyGroup

    public class PropertyMap
    extends java.util.Properties
    A replacement for the standard java.util.Properties class which adds, among others, property event capabilities.
    Version:
    $Revision$
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Map boundListeners
      Bound property name -> listener list map
      static java.lang.String[] EMPTY_ARRAY_PROPERTY
      Empty array property
      private java.util.Map jndiMap
      This map avoids heavy contention for the properties that JNDI looks up everytime a new InitialContext instance is created.
      private static java.lang.Object NULL_VALUE  
      static java.lang.String PROPERTY_NAME_SEPARATOR
      Property name separator
      private static long serialVersionUID
      Serial version uid
      protected java.util.List unboundListeners
      Property listener list
      • Fields inherited from class java.util.Properties

        defaults
    • Constructor Summary

      Constructors 
      Constructor Description
      PropertyMap()
      Construct a PropertyMap.
      PropertyMap​(java.util.Properties defaults)
      Construct a PropertyMap with default properties.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addPropertyListener​(BoundPropertyListener listener)
      Add a bound property listener.
      void addPropertyListener​(PropertyListener listener)
      Add a property listener.
      void addPropertyListeners​(PropertyListener[] listeners)
      Add an array of property listeners.
      boolean containsProperty​(java.lang.String name)
      Check if this map contains a given property.
      java.util.Set entrySet​(boolean includeDefaults)
      Returns a set of entrys for all entries in this group and optionally all of the entrys in the defaults map.
      private void firePropertyAdded​(java.util.List list, PropertyEvent event)
      Fire a property added event to the given list of listeners.
      protected void firePropertyAdded​(PropertyEvent event)
      Fire a property added event to all registered listeners.
      private void firePropertyChanged​(java.util.List list, PropertyEvent event)
      Fire a property changed event to the given list of listeners.
      protected void firePropertyChanged​(PropertyEvent event)
      Fire a property changed event to all listeners.
      private void firePropertyRemoved​(java.util.List list, PropertyEvent event)
      Fire a property removed event to the given list of listeners.
      protected void firePropertyRemoved​(PropertyEvent event)
      Fire a property removed event to all registered listeners.
      java.lang.String[] getArrayProperty​(java.lang.String name)
      Get an array style property.
      java.lang.String[] getArrayProperty​(java.lang.String base, java.lang.String[] defaultValues)
      Get an array style property.
      java.lang.String getProperty​(java.lang.String name)  
      PropertyGroup getPropertyGroup​(java.lang.String basename)
      Get a property group for the given property base.
      PropertyGroup getPropertyGroup​(java.lang.String basename, int index)
      Get a property group for the given property base at the given index.
      private void init()
      Initialized listener lists and the JNDI properties cache map
      java.util.Set keySet​(boolean includeDefaults)
      Returns a set of keys for all entries in this group and optionally all of the keys in the defaults map.
      void load​(java.lang.String className)
      Load properties from a PropertyReader specifed by the given class name.
      void load​(java.lang.String prefix, java.util.Map map)
      Load properties from a map.
      void load​(java.util.Map map)
      Load properties from a map.
      void load​(PropertyReader reader)
      Load properties from a PropertyReader.
      protected java.lang.String makeIndexPropertyName​(java.lang.String base, int index)
      Make an indexed property name.
      protected java.lang.String makePrefixedPropertyName​(java.lang.String base, java.lang.String prefix)
      Make a optionaly prefixed property name.
      java.util.Iterator names()
      Return an iterator over all contained property names.
      java.lang.Object put​(java.lang.Object name, java.lang.Object value)
      Set a property.
      private void readObject​(java.io.ObjectInputStream stream)  
      java.lang.Object remove​(java.lang.Object name)
      Remove a property.
      java.lang.String removeProperty​(java.lang.String name)
      Remove a property.
      protected boolean removePropertyListener​(BoundPropertyListener listener)
      Remove a bound property listener.
      boolean removePropertyListener​(PropertyListener listener)
      Remove a property listener.
      java.lang.Object setProperty​(java.lang.String name, java.lang.String value)
      Set a property.
      private void updateJndiCache​(java.lang.String name, java.lang.String value)
      Called by setProperty to update the jndiMap cache values.
      private void writeObject​(java.io.ObjectOutputStream stream)  
      • Methods inherited from class java.util.Properties

        clear, clone, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, getProperty, hashCode, isEmpty, keys, keySet, list, list, load, load, loadFromXML, merge, propertyNames, putAll, putIfAbsent, rehash, remove, replace, replace, replaceAll, save, size, store, store, storeToXML, storeToXML, storeToXML, stringPropertyNames, toString, values
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serial version uid
        See Also:
        Constant Field Values
      • PROPERTY_NAME_SEPARATOR

        public static final java.lang.String PROPERTY_NAME_SEPARATOR
        Property name separator
        See Also:
        Constant Field Values
      • EMPTY_ARRAY_PROPERTY

        public static final java.lang.String[] EMPTY_ARRAY_PROPERTY
        Empty array property
      • unboundListeners

        protected transient java.util.List unboundListeners
        Property listener list
      • boundListeners

        protected transient java.util.Map boundListeners
        Bound property name -> listener list map
      • jndiMap

        private transient java.util.Map jndiMap
        This map avoids heavy contention for the properties that JNDI looks up everytime a new InitialContext instance is created. Once the container is up and running getProperty calls other than for the JNDI property are very rare, so the double lookup is not much of a performance problem. If at all possible, this class should be read-only and use no locks at all.
      • NULL_VALUE

        private static final java.lang.Object NULL_VALUE
    • Constructor Detail

      • PropertyMap

        public PropertyMap​(java.util.Properties defaults)
        Construct a PropertyMap with default properties.
        Parameters:
        defaults - Default properties.
      • PropertyMap

        public PropertyMap()
        Construct a PropertyMap.
    • Method Detail

      • init

        private void init()
        Initialized listener lists and the JNDI properties cache map
      • updateJndiCache

        private void updateJndiCache​(java.lang.String name,
                                     java.lang.String value)
        Called by setProperty to update the jndiMap cache values.
        Parameters:
        name - the property name
        value - the property value
      • put

        public java.lang.Object put​(java.lang.Object name,
                                    java.lang.Object value)
        Set a property.
        Specified by:
        put in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        put in class java.util.Properties
        Parameters:
        name - Property name.
        value - Property value.
        Returns:
        Previous property value or null.
      • remove

        public java.lang.Object remove​(java.lang.Object name)
        Remove a property.
        Specified by:
        remove in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        remove in class java.util.Properties
        Parameters:
        name - Property name.
        Returns:
        Removed property value.
      • keySet

        public java.util.Set keySet​(boolean includeDefaults)
        Returns a set of keys for all entries in this group and optionally all of the keys in the defaults map.
        Parameters:
        includeDefaults -
        Returns:
        the key set
      • entrySet

        public java.util.Set entrySet​(boolean includeDefaults)
        Returns a set of entrys for all entries in this group and optionally all of the entrys in the defaults map.
        Parameters:
        includeDefaults -
        Returns:
        the entry set
      • addPropertyListener

        public void addPropertyListener​(PropertyListener listener)
        Add a property listener.
        Parameters:
        listener - Property listener to add.
      • addPropertyListener

        protected void addPropertyListener​(BoundPropertyListener listener)
        Add a bound property listener.
        Parameters:
        listener - Bound property listener to add.
      • addPropertyListeners

        public void addPropertyListeners​(PropertyListener[] listeners)
        Add an array of property listeners.
        Parameters:
        listeners - Array of property listeners to add.
      • removePropertyListener

        public boolean removePropertyListener​(PropertyListener listener)
        Remove a property listener.
        Parameters:
        listener - Property listener to remove.
        Returns:
        True if listener was removed.
      • removePropertyListener

        protected boolean removePropertyListener​(BoundPropertyListener listener)
        Remove a bound property listener.
        Parameters:
        listener - Bound property listener to remove.
        Returns:
        True if listener was removed.
      • firePropertyAdded

        private void firePropertyAdded​(java.util.List list,
                                       PropertyEvent event)
        Fire a property added event to the given list of listeners.
        Parameters:
        list - Listener list.
        event - Property event.
      • firePropertyAdded

        protected void firePropertyAdded​(PropertyEvent event)
        Fire a property added event to all registered listeners.
        Parameters:
        event - Property event.
      • firePropertyRemoved

        private void firePropertyRemoved​(java.util.List list,
                                         PropertyEvent event)
        Fire a property removed event to the given list of listeners.
        Parameters:
        list - Listener list.
        event - Property event.
      • firePropertyRemoved

        protected void firePropertyRemoved​(PropertyEvent event)
        Fire a property removed event to all registered listeners.
        Parameters:
        event - Property event.
      • firePropertyChanged

        private void firePropertyChanged​(java.util.List list,
                                         PropertyEvent event)
        Fire a property changed event to the given list of listeners.
        Parameters:
        list - Listener list.
        event - Property event.
      • firePropertyChanged

        protected void firePropertyChanged​(PropertyEvent event)
        Fire a property changed event to all listeners.
        Parameters:
        event - Property event.
      • makePrefixedPropertyName

        protected java.lang.String makePrefixedPropertyName​(java.lang.String base,
                                                            java.lang.String prefix)
        Make a optionaly prefixed property name.
        Parameters:
        base - Base property name.
        prefix - Optional prefix (can be null).
        Returns:
        Property name.
      • load

        public void load​(java.lang.String prefix,
                         java.util.Map map)
                  throws PropertyException
        Load properties from a map.
        Parameters:
        prefix - Prefix to append to all map keys (or null).
        map - Map containing properties to load.
        Throws:
        PropertyException
      • load

        public void load​(java.util.Map map)
                  throws PropertyException
        Load properties from a map.
        Parameters:
        map - Map containing properties to load.
        Throws:
        PropertyException
      • load

        public void load​(PropertyReader reader)
                  throws PropertyException,
                         java.io.IOException
        Load properties from a PropertyReader.
        Parameters:
        reader - PropertyReader to read properties from.
        Throws:
        PropertyException
        java.io.IOException
      • load

        public void load​(java.lang.String className)
                  throws PropertyException,
                         java.io.IOException
        Load properties from a PropertyReader specifed by the given class name.
        Parameters:
        className - Class name of a PropertyReader to read from.
        Throws:
        PropertyException
        java.io.IOException
      • setProperty

        public java.lang.Object setProperty​(java.lang.String name,
                                            java.lang.String value)
        Set a property.

        Returns Object instead of String due to limitations with java.util.Properties.

        Overrides:
        setProperty in class java.util.Properties
        Parameters:
        name - Property name.
        value - Property value.
        Returns:
        Previous property value or null.
      • getProperty

        public java.lang.String getProperty​(java.lang.String name)
        Overrides:
        getProperty in class java.util.Properties
      • removeProperty

        public java.lang.String removeProperty​(java.lang.String name)
        Remove a property.
        Parameters:
        name - Property name.
        Returns:
        Removed property value or null.
      • makeIndexPropertyName

        protected java.lang.String makeIndexPropertyName​(java.lang.String base,
                                                         int index)
        Make an indexed property name.
        Parameters:
        base - Base property name.
        index - Property index.
        Returns:
        Indexed property name.
      • getArrayProperty

        public java.lang.String[] getArrayProperty​(java.lang.String base,
                                                   java.lang.String[] defaultValues)
        Get an array style property.

        Array properties are specified as: base_property_name.INDEX.

        Indexes begin with zero and must be contiguous. A break in continuity signals the end of the array.

        Parameters:
        base - Base property name.
        defaultValues - Default property values.
        Returns:
        Array of property values or default.
      • getArrayProperty

        public java.lang.String[] getArrayProperty​(java.lang.String name)
        Get an array style property.
        Parameters:
        name - Property name.
        Returns:
        Array of property values or empty array.
      • names

        public java.util.Iterator names()
        Return an iterator over all contained property names.
        Returns:
        Property name iterator.
      • containsProperty

        public boolean containsProperty​(java.lang.String name)
        Check if this map contains a given property.
        Parameters:
        name - Property name.
        Returns:
        True if contains property.
      • getPropertyGroup

        public PropertyGroup getPropertyGroup​(java.lang.String basename)
        Get a property group for the given property base.
        Parameters:
        basename - Base property name.
        Returns:
        Property group.
      • getPropertyGroup

        public PropertyGroup getPropertyGroup​(java.lang.String basename,
                                              int index)
        Get a property group for the given property base at the given index.
        Parameters:
        basename - Base property name.
        index - Array property index.
        Returns:
        Property group.
      • readObject

        private void readObject​(java.io.ObjectInputStream stream)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream stream)
                          throws java.io.IOException
        Throws:
        java.io.IOException