Class SubsetConfiguration

All Implemented Interfaces:
Configuration

A subset of another configuration. The new Configuration object contains every key from the parent Configuration that starts with prefix. The prefix is removed from the keys in the subset.

It is usually not necessary to use this class directly. Instead the Configuration.subset(String) method should be used, which will return a correctly initialized instance.

Version:
$Id: SubsetConfiguration.java 1210202 2011-12-04 20:30:46Z oheger $
Author:
Emmanuel Bourg
  • Field Details

  • Constructor Details

    • SubsetConfiguration

      public SubsetConfiguration(Configuration parent, String prefix)
      Create a subset of the specified configuration
      Parameters:
      parent - The parent configuration
      prefix - The prefix used to select the properties
    • SubsetConfiguration

      public SubsetConfiguration(Configuration parent, String prefix, String delimiter)
      Create a subset of the specified configuration
      Parameters:
      parent - The parent configuration
      prefix - The prefix used to select the properties
      delimiter - The prefix delimiter
  • Method Details

    • getParentKey

      protected String getParentKey(String key)
      Return the key in the parent configuration associated to the specified key in this subset.
      Parameters:
      key - The key in the subset.
      Returns:
      the key as to be used by the parent
    • getChildKey

      protected String getChildKey(String key)
      Return the key in the subset configuration associated to the specified key in the parent configuration.
      Parameters:
      key - The key in the parent configuration.
      Returns:
      the key in the context of this subset configuration
    • getParent

      Return the parent configuration for this subset.
      Returns:
      the parent configuration
    • getPrefix

      public String getPrefix()
      Return the prefix used to select the properties in the parent configuration.
      Returns:
      the prefix used by this subset
    • setPrefix

      public void setPrefix(String prefix)
      Set the prefix used to select the properties in the parent configuration.
      Parameters:
      prefix - the prefix
    • subset

      public Configuration subset(String prefix)
      Description copied from interface: Configuration
      Return a decorator Configuration containing every key from the current Configuration that starts with the specified prefix. The prefix is removed from the keys in the subset. For example, if the configuration contains the following properties:
          prefix.number = 1
          prefix.string = Apache
          prefixed.foo = bar
          prefix = Jakarta
      the Configuration returned by subset("prefix") will contain the properties:
          number = 1
          string = Apache
          = Jakarta
      (The key for the value "Jakarta" is an empty string)

      Since the subset is a decorator and not a modified copy of the initial Configuration, any change made to the subset is available to the Configuration, and reciprocally.

      Specified by:
      subset in interface Configuration
      Overrides:
      subset in class AbstractConfiguration
      Parameters:
      prefix - The prefix used to select the properties.
      Returns:
      a subset configuration
      See Also:
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: Configuration
      Check if the configuration is empty.
      Returns:
      true if the configuration contains no property, false otherwise.
    • containsKey

      public boolean containsKey(String key)
      Description copied from interface: Configuration
      Check if the configuration contains the specified key.
      Parameters:
      key - the key whose presence in this configuration is to be tested
      Returns:
      true if the configuration contains a value for this key, false otherwise
    • addPropertyDirect

      public void addPropertyDirect(String key, Object value)
      Description copied from class: AbstractConfiguration
      Adds a key/value pair to the Configuration. Override this method to provide write access to underlying Configuration store.
      Specified by:
      addPropertyDirect in class AbstractConfiguration
      Parameters:
      key - key to use for mapping
      value - object to store
    • clearPropertyDirect

      protected void clearPropertyDirect(String key)
      Description copied from class: AbstractConfiguration
      Removes the specified property from this configuration. This method is called by clearProperty() after it has done some preparations. It should be overridden in sub classes. This base implementation is just left empty.
      Overrides:
      clearPropertyDirect in class AbstractConfiguration
      Parameters:
      key - the key to be removed
    • getProperty

      public Object getProperty(String key)
      Description copied from interface: Configuration
      Gets a property from the configuration. This is the most basic get method for retrieving values of properties. In a typical implementation of the Configuration interface the other get methods (that return specific data types) will internally make use of this method. On this level variable substitution is not yet performed. The returned object is an internal representation of the property value for the passed in key. It is owned by the Configuration object. So a caller should not modify this object. It cannot be guaranteed that this object will stay constant over time (i.e. further update operations on the configuration may change its internal state).
      Parameters:
      key - property to retrieve
      Returns:
      the value to which this configuration maps the specified key, or null if the configuration contains no mapping for this key.
    • getKeys

      public Iterator<String> getKeys(String prefix)
      Description copied from class: AbstractConfiguration
      Get the list of the keys contained in the configuration that match the specified prefix. For instance, if the configuration contains the following keys:
      db.user, db.pwd, db.url, window.xpos, window.ypos,
      an invocation of getKeys("db");
      will return the keys below:
      db.user, db.pwd, db.url.
      Note that the prefix itself is included in the result set if there is a matching key. The exact behavior - how the prefix is actually interpreted - depends on a concrete implementation. This implementation returns keys that either match the prefix or start with the prefix followed by a dot ('.'). So the call getKeys("db"); will find the keys db, db.user, or db.password, but not the key dbdriver.
      Specified by:
      getKeys in interface Configuration
      Overrides:
      getKeys in class AbstractConfiguration
      Parameters:
      prefix - The prefix to test against.
      Returns:
      An Iterator of keys that match the prefix.
      See Also:
    • getKeys

      public Iterator<String> getKeys()
      Description copied from interface: Configuration
      Get the list of the keys contained in the configuration. The returned iterator can be used to obtain all defined keys. Note that the exact behavior of the iterator's remove() method is specific to a concrete implementation. It may remove the corresponding property from the configuration, but this is not guaranteed. In any case it is no replacement for calling Configuration.clearProperty(String) for this property. So it is highly recommended to avoid using the iterator's remove() method.
      Returns:
      An Iterator.
    • interpolate

      protected Object interpolate(Object base)
      Description copied from class: AbstractConfiguration
      Returns the interpolated value. Non String values are returned without change.
      Overrides:
      interpolate in class AbstractConfiguration
      Parameters:
      base - the value to interpolate
      Returns:
      returns the value with variables substituted
    • interpolate

      protected String interpolate(String base)
      Description copied from class: AbstractConfiguration
      interpolate key names to handle ${key} stuff
      Overrides:
      interpolate in class AbstractConfiguration
      Parameters:
      base - string to interpolate
      Returns:
      returns the key name with the ${key} substituted
    • setThrowExceptionOnMissing

      public void setThrowExceptionOnMissing(boolean throwExceptionOnMissing)
      Allows to set the throwExceptionOnMissing flag. This flag controls the behavior of property getter methods that return objects if the requested property is missing. If the flag is set to false (which is the default value), these methods will return null. If set to true, they will throw a NoSuchElementException exception. Note that getter methods for primitive data types are not affected by this flag. Change the behavior of the parent configuration if it supports this feature.
      Overrides:
      setThrowExceptionOnMissing in class AbstractConfiguration
      Parameters:
      throwExceptionOnMissing - The new value for the property
    • isThrowExceptionOnMissing

      public boolean isThrowExceptionOnMissing()
      Returns true if missing values throw Exceptions. The subset inherits this feature from its parent if it supports this feature.
      Overrides:
      isThrowExceptionOnMissing in class AbstractConfiguration
      Returns:
      true if missing values throw Exceptions
    • getListDelimiter

      public char getListDelimiter()
      Returns the list delimiter. This property will be fetched from the parent configuration if supported.
      Overrides:
      getListDelimiter in class AbstractConfiguration
      Returns:
      the list delimiter
      Since:
      1.4
    • setListDelimiter

      public void setListDelimiter(char delim)
      Sets the list delimiter. If the parent configuration supports this feature, the delimiter will be set at the parent.
      Overrides:
      setListDelimiter in class AbstractConfiguration
      Parameters:
      delim - the new list delimiter
      Since:
      1.4
    • isDelimiterParsingDisabled

      public boolean isDelimiterParsingDisabled()
      Returns a flag whether string properties should be checked for list delimiter characters. This implementation ensures that this flag is kept in sync with the parent configuration if this object supports this feature.
      Overrides:
      isDelimiterParsingDisabled in class AbstractConfiguration
      Returns:
      the delimiter parsing disabled flag
      Since:
      1.4
    • setDelimiterParsingDisabled

      public void setDelimiterParsingDisabled(boolean delimiterParsingDisabled)
      Sets a flag whether list parsing is disabled. This implementation will also set the flag at the parent configuration if this object supports this feature.
      Overrides:
      setDelimiterParsingDisabled in class AbstractConfiguration
      Parameters:
      delimiterParsingDisabled - the delimiter parsing disabled flag
      Since:
      1.4