Package tigase.conf

# Class ConfigurationCache

java.lang.Object
tigase.conf.ConfigurationCache

All Implemented Interfaces:
  `Iterable<ConfigItem>`, `ConfigRepositoryIfc`, `ComponentRepository<ConfigItem>`, `Repository`

Direct Known Subclasses:
  `ConfigSQLRepository`, `ConfigXMLRepository`

public class ConfigurationCache extends Object implements ConfigRepositoryIfc
Created: Dec 10, 2009 2:02:41 PM

Author:
  Artur Hefczyc

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface tigase.db.Repository

  `Repository.Meta, Repository.SchemaId`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `CONFIG_DUMP_FILE_PROP_DEF`
  `static final String`
  `CONFIG_DUMP_FILE_PROP_KEY`

  ### Fields inherited from interface tigase.db.comp.ComponentRepository

  `COMP_REPO_BIND`

  ### Fields inherited from interface tigase.conf.ConfigRepositoryIfc

  `RELOAD_DELAY, RESOURCE_URI`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ConfigurationCache()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addItem(String key, Object value)`
  Method adds an Item to the configuration repository where the key is the item key constructed of component name, node name and property key name.
  `void`
  `addItem(String compName, ConfigItem item)`
  `void`
  `addItem(ConfigItem item)`
  The method adds a new or updates existing Item in the repository.
  `void`
  `addItemNoStore(ConfigItem item)`
  The method adds a new or updates existing Item.
  `void`
  `addRepoChangeListener(RepositoryChangeListenerIfc<ConfigItem> repoChangeListener)`
  Adds a listener for repository Item change.
  `Collection<ConfigItem>`
  `allItems()`
  Returns a collection with all items stored in the repository.
  `boolean`
  `contains(String key)`
  The method checks whether the item is stored in the repository.
  `void`
  `destroy()`
  Method destroys this instance of ComponentRepository releasing resources allocated for this instance of ComponentRepository if possible
  `Object`
  `get(String compName, String node, String key, Object def)`
  Returns a configuration setting for a given component, node and key.
  `String[]`
  `getCompNames()`
  Returns all component names for which there are some configuration settings available.
  `void`
  `getDefaults(Map<String,Object> defs, Map<String,Object> params)`
  Deprecated.
  `String`
  `getDefHostname()`
  `Map<String,Object>`
  `getInitProperties()`
  `ConfigItem`
  `getItem(String key)`
  The method returns all item configuration parameters for a key or `null` if the item does not exist in the repository.
  `ConfigItem`
  `getItem(String compName, String node, String key)`
  `ConfigItem`
  `getItemInstance()`
  Creates a new, uninitialized instance of the repository Item.
  `Set<ConfigItem>`
  `getItemsForComponent(String compName)`
  Get set of config items stored for component
  `String[]`
  `getKeys(String compName, String node)`
  Returns an array of all configuration keys for a given component and configuration node.
  `Map<String,Object>`
  `getProperties(String compName)`
  Deprecated.
  `void`
  `initRepository(String resource_uri, Map<String,String> params)`
  Deprecated.
  `Iterator<ConfigItem>`
  `iterator()`
  `void`
  `putProperties(String compName, Map<String,Object> props)`
  Sets/adds properties for the given component name.
  `void`
  `reload()`
  This method is called to reload items from the database or other permanent storage.
  `void`
  `remove(String compName, String node, String key)`
  Removes a configuration setting from the configuration repository.
  `void`
  `removeItem(String key)`
  The method is called to remove given Item from the memory cache and permanent storage.
  `void`
  `removeItem(String compName, ConfigItem item)`
  `void`
  `removeItemNoStore(String key)`
  `void`
  `removeRepoChangeListener(RepositoryChangeListenerIfc<ConfigItem> repoChangeListener)`
  Removes a listener for repository Item change.
  `void`
  `set(String compName, String node, String key, Object value)`
  Puts/sets/adds/updates a configuration setting to the configuration repository.
  `void`
  `setAutoloadTimer(long delay)`
  Sets autoload task to periodically reload data from database.
  `void`
  `setDefHostname(String hostname)`
  This is used to load a configuration for a selected cluster node.
  `void`
  `setProperties(Map<String,Object> properties)`
  Deprecated.
  `int`
  `size()`
  The method returns number of items in the repository.
  `void`
  `store()`
  The method is called to store all data in the database.
  `String`
  `validateItem(ConfigItem item)`
  Performs Item validation to check whether it meets the repository policy.

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

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

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Field Details

  - ### CONFIG_DUMP_FILE_PROP_DEF

    public static final String CONFIG_DUMP_FILE_PROP_DEF
    See Also:
      - Constant Field Values

  - ### CONFIG_DUMP_FILE_PROP_KEY

    public static final String CONFIG_DUMP_FILE_PROP_KEY
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### ConfigurationCache

    public ConfigurationCache()

- ## Method Details

  - ### addRepoChangeListener

    public void addRepoChangeListener(RepositoryChangeListenerIfc<ConfigItem> repoChangeListener)
    Description copied from interface: `ComponentRepository`
    Adds a listener for repository Item change.
    Specified by:
      `addRepoChangeListener` in interface `ComponentRepository<ConfigItem>`

  - ### removeRepoChangeListener

    public void removeRepoChangeListener(RepositoryChangeListenerIfc<ConfigItem> repoChangeListener)
    Description copied from interface: `ComponentRepository`
    Removes a listener for repository Item change.
    Specified by:
      `removeRepoChangeListener` in interface `ComponentRepository<ConfigItem>`

  - ### addItem

    public void addItem(String compName, ConfigItem item)

  - ### addItemNoStore

    public void addItemNoStore(ConfigItem item)
    Description copied from interface: `ComponentRepository`
    The method adds a new or updates existing Item. It needs to have all fields set correctly. After this method call is finished a new added item must be available in the component repository. The method adds the item to memory cache but not to a permanent storage.
    Specified by:
      `addItemNoStore` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `item` - a `Item` with all it's configuration parameters.

  - ### addItem

    public void addItem(ConfigItem item) throws TigaseDBException
    Description copied from interface: `ComponentRepository`
    The method adds a new or updates existing Item in the repository. It needs to have all fields set correctly. After this method call is finished a new added item must be available in the component repository. The method adds the item to memory cache and permanent storage.
    Specified by:
      `addItem` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `item` - a `Item` with all it's configuration parameters.
    Throws:
      `TigaseDBException`

  - ### addItem

    public void addItem(String key, Object value) throws ConfigurationException
    Description copied from interface: `ConfigRepositoryIfc`
    Method adds an Item to the configuration repository where the key is the item key constructed of component name, node name and property key name.
    Specified by:
      `addItem` in interface `ConfigRepositoryIfc`
    Throws:
      `ConfigurationException`

  - ### allItems

    public Collection<ConfigItem> allItems() throws TigaseDBException
    Description copied from interface: `ComponentRepository`
    Returns a collection with all items stored in the repository.
    Specified by:
      `allItems` in interface `ComponentRepository<ConfigItem>`
    Throws:
      `TigaseDBException`

  - ### contains

    public boolean contains(String key)
    Description copied from interface: `ComponentRepository`
    The method checks whether the item is stored in the repository.
    Specified by:
      `contains` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `key` - a `String` with key to search for.
    Returns:
      a `boolean` value `true` if the item exists in the repository or `false` of it does not.

  - ### destroy

    public void destroy()
    Description copied from interface: `ComponentRepository`
    Method destroys this instance of ComponentRepository releasing resources allocated for this instance of ComponentRepository if possible
    Specified by:
      `destroy` in interface `ComponentRepository<ConfigItem>`

  - ### get

    public Object get(String compName, String node, String key, Object def)
    Description copied from interface: `ConfigRepositoryIfc`
    Returns a configuration setting for a given component, node and key. If the configuration parameters is not found, returns given default value.
    Specified by:
      `get` in interface `ConfigRepositoryIfc`
    Returns:
      value

  - ### getCompNames

    public String[] getCompNames()
    Description copied from interface: `ConfigRepositoryIfc`
    Returns all component names for which there are some configuration settings available.
    Specified by:
      `getCompNames` in interface `ConfigRepositoryIfc`
    Returns:
      array of component names

  - ### getDefHostname

    public String getDefHostname()

  - ### setDefHostname

    public void setDefHostname(String hostname)
    Description copied from interface: `ConfigRepositoryIfc`
    This is used to load a configuration for a selected cluster node. The configuration repository (file or database) may contain settings for all cluster nodes, some of the settings may be exclusive to one or another cluster node. This method informs the repository what node name (hostname) it is running on.
    Specified by:
      `setDefHostname` in interface `ConfigRepositoryIfc`

  - ### getDefaults

    @Deprecated public void getDefaults(Map<String,Object> defs, Map<String,Object> params)
    Deprecated.
    Description copied from interface: `ComponentRepository`
    The method is called to obtain default configuration settings if there are any for this repository implementation The configuration settings are implementation dependent and there are no defaults set by the server. Default settings returned by this method are then saved in the configuration file and presented to the admin for further adjustments.
    Specified by:
      `getDefaults` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `defs` - is a `Map` collection where all repository configuration defaults must be put.
      `params` - is a `Map` collection with some preset properties for the server. These settings can be used to adjust repository defaults, for example they can contain database connection URL or initial list of virtual domains.

  - ### getInitProperties

    public Map<String,Object> getInitProperties()
    Specified by:
      `getInitProperties` in interface `ConfigRepositoryIfc`

  - ### getItem

    public ConfigItem getItem(String compName, String node, String key)

  - ### getItem

    public ConfigItem getItem(String key)
    Description copied from interface: `ComponentRepository`
    The method returns all item configuration parameters for a key or `null` if the item does not exist in the repository.
    Specified by:
      `getItem` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `key` - a `String` with item identifier to search for.
    Returns:
      a `Item` for a given key or `null` if the item is not in the repository.

  - ### getItemInstance

    public ConfigItem getItemInstance()
    Description copied from interface: `ComponentRepository`
    Creates a new, uninitialized instance of the repository Item.
    Specified by:
      `getItemInstance` in interface `ComponentRepository<ConfigItem>`
    Returns:
      a new, uninitialized instance of the repository Item.

  - ### getItemsForComponent

    public Set<ConfigItem> getItemsForComponent(String compName)
    Description copied from interface: `ConfigRepositoryIfc`
    Get set of config items stored for component
    Specified by:
      `getItemsForComponent` in interface `ConfigRepositoryIfc`
    Returns:
      set of component items

  - ### getKeys

    public String[] getKeys(String compName, String node)
    Description copied from interface: `ConfigRepositoryIfc`
    Returns an array of all configuration keys for a given component and configuration node.
    Specified by:
      `getKeys` in interface `ConfigRepositoryIfc`
    Returns:
      array of keys for component and node

  - ### getProperties

    @Deprecated public Map<String,Object> getProperties(String compName) throws ConfigurationException
    Deprecated.
    Description copied from interface: `ConfigRepositoryIfc`
    Returns all known settings for the given component name.
    Specified by:
      `getProperties` in interface `ConfigRepositoryIfc`
    Returns:
      map with configuration
    Throws:
      `ConfigurationException`

  - ### initRepository

    @Deprecated public void initRepository(String resource_uri, Map<String,String> params) throws DBInitException
    Deprecated.
    Description copied from interface: `Repository`
    Method is deprecated and should not be user any more.
    The method is called to initialize the data repository. Depending on the implementation all the initialization parameters can be passed either via `resource_uri` parameter as the database connection string or via `params` map if the required repository parameters are more complex or both.
    Specified by:
      `initRepository` in interface `Repository`
    Parameters:
      `resource_uri` - value in most cases representing the database connection string.
      `params` - is a `Map` with repository properties necessary to initialize and perform all the functions. The initialization parameters are implementation dependent.
    Throws:
      `DBInitException` - if there was an error during repository initialization. Some implementations, though, perform so called lazy initialization so even though there is a problem with the underlying repository it may not be signaled through this method call.

  - ### iterator

    public Iterator<ConfigItem> iterator()
    Specified by:
      `iterator` in interface `Iterable<ConfigItem>`

  - ### putProperties

    public void putProperties(String compName, Map<String,Object> props) throws ConfigurationException
    Description copied from interface: `ConfigRepositoryIfc`
    Sets/adds properties for the given component name.
    Specified by:
      `putProperties` in interface `ConfigRepositoryIfc`
    Throws:
      `ConfigurationException`

  - ### reload

    public void reload() throws TigaseDBException
    Description copied from interface: `ComponentRepository`
    This method is called to reload items from the database or other permanent storage. It is possible that items list is modified externally by third-party system. When all modifications are done this method is called to refresh the class cache. Whether the implementation load whole list or just last modifications is implementation dependent.
    Specified by:
      `reload` in interface `ComponentRepository<ConfigItem>`
    Throws:
      `TigaseDBException`

  - ### remove

    public void remove(String compName, String node, String key)
    Description copied from interface: `ConfigRepositoryIfc`
    Removes a configuration setting from the configuration repository.
    Specified by:
      `remove` in interface `ConfigRepositoryIfc`

  - ### removeItem

    public void removeItem(String compName, ConfigItem item)

  - ### removeItem

    public void removeItem(String key) throws TigaseDBException
    Description copied from interface: `ComponentRepository`
    The method is called to remove given Item from the memory cache and permanent storage. After this method is completed the item should no longer be available in the component repository.
    Specified by:
      `removeItem` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `key` - a `String` with domain name to remove.
    Throws:
      `TigaseDBException`

  - ### removeItemNoStore

    public void removeItemNoStore(String key)
    Specified by:
      `removeItemNoStore` in interface `ComponentRepository<ConfigItem>`

  - ### set

    public void set(String compName, String node, String key, Object value)
    Description copied from interface: `ConfigRepositoryIfc`
    Puts/sets/adds/updates a configuration setting to the configuration repository.
    Specified by:
      `set` in interface `ConfigRepositoryIfc`

  - ### setProperties

    @Deprecated public void setProperties(Map<String,Object> properties)
    Deprecated.
    Description copied from interface: `ComponentRepository`
    The method is called to set configuration for this repository implementation. The configuration is repository implementation dependent. There are no default settings for the repository.
    Specified by:
      `setProperties` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `properties` - a `Map` with configuration settings. Content of this `Map` must not be modified. This read-only collection.

  - ### size

    public int size()
    Description copied from interface: `ComponentRepository`
    The method returns number of items in the repository.
    Specified by:
      `size` in interface `ComponentRepository<ConfigItem>`
    Returns:
      an `int` value with number of items in the repository.

  - ### store

    public void store() throws TigaseDBException
    Description copied from interface: `ComponentRepository`
    The method is called to store all data in the database. It is used when the repository has been changed in some way and the changes have to be put to a permanent storage for later retrieval.
    Specified by:
      `store` in interface `ComponentRepository<ConfigItem>`
    Throws:
      `TigaseDBException`

  - ### validateItem

    public String validateItem(ConfigItem item)
    Description copied from interface: `ComponentRepository`
    Performs Item validation to check whether it meets the repository policy. If validation is successful the method returns `null`, otherwise it returns an error description.
    Specified by:
      `validateItem` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `item` - is an `Item` object to perform validation checking upon.
    Returns:
      `null` on success and an error message otherwise.

  - ### setAutoloadTimer

    public void setAutoloadTimer(long delay)
    Description copied from interface: `ComponentRepository`
    Sets autoload task to periodically reload data from database.
    Specified by:
      `setAutoloadTimer` in interface `ComponentRepository<ConfigItem>`
    Parameters:
      `delay` - in seconds between each database reload.