Package tigase.db.comp

# Interface ComponentRepository<Item extends RepositoryItem>

Type Parameters:
  `Item` - An element stored in the component repository.

All Superinterfaces:
  `Iterable<Item>`, `Repository`

All Known Subinterfaces:
  `ComponentRepositoryDataSourceAware<Item,DS>`, `ConfigRepositoryIfc`, `VHostComponentRepository`, `VHostComponentRepositoryDataSourceAware<DS>`

All Known Implementing Classes:
  `AbstractCompDBRepository`, `AbstractSDComponentRepositoryBean`, `CertificateRepository`, `ClConConfigRepository`, `ClConDirRepository`, `ClConSQLRepository`, `ClusterConnectionManager.DefClConRepositoryBean`, `CompCompDBRepository`, `CompConfigRepository`, `CompSQLRepository`, `ConfigRepository`, `ConfigSQLRepository`, `ConfigurationCache`, `ConfigXMLRepository`, `ExtServiceDiscoveryUserRepoRepository`, `ManagerCompDBRepository`, `ServerCompDBRepository`, `TaskConfigItemJDBCRepository`, `UserRepoRepository`, `VHostJDBCRepository`, `VHostManager.DefVHostRepositoryBean`

public interface ComponentRepository<Item extends RepositoryItem> extends Iterable<Item>, Repository
A convenience interface for a unified access to component specific repository data. This is not intended to keep huge number of elements. Rather then it is more like for storing Component dynamic configuration data. In simple cases this data can be stored in configuration file, in more complex cases it can be a database represented by UserRepository or even something else.
The repository is intended to store elements of a single type only. Each element is identified by a unique key. All elements are cached in memory for a fast retrieval so this kind of repository is recommended for small data only when you need very fast and efficient access to all the information.
Some implementations however may behave differently and not cache all the repository items in memory.
Created: Oct 3, 2009 1:46:25 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`
  `COMP_REPO_BIND`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addItem(Item item)`
  The method adds a new or updates existing Item in the repository.
  `void`
  `addItemNoStore(Item item)`
  The method adds a new or updates existing Item.
  `void`
  `addRepoChangeListener(RepositoryChangeListenerIfc<Item> repoChangeListener)`
  Adds a listener for repository Item change.
  `Collection<Item>`
  `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
  `void`
  `getDefaults(Map<String,Object> defs, Map<String,Object> params)`
  Deprecated.
  `Item`
  `getItem(String key)`
  The method returns all item configuration parameters for a key or `null` if the item does not exist in the repository.
  `Item`
  `getItemInstance()`
  Creates a new, uninitialized instance of the repository Item.
  `void`
  `reload()`
  This method is called to reload items from the database or other permanent storage.
  `void`
  `removeItem(String key)`
  The method is called to remove given Item from the memory cache and permanent storage.
  `void`
  `removeItemNoStore(String key)`
  `void`
  `removeRepoChangeListener(RepositoryChangeListenerIfc<Item> repoChangeListener)`
  Removes a listener for repository Item change.
  `void`
  `setAutoloadTimer(long delay)`
  Sets autoload task to periodically reload data from database.
  `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(Item item)`
  Performs Item validation to check whether it meets the repository policy.

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

  `forEach, iterator, spliterator`

  ### Methods inherited from interface tigase.db.Repository

  `initRepository`

- ## Field Details

  - ### COMP_REPO_BIND

    static final String COMP_REPO_BIND
    See Also:
      - Constant Field Values

- ## Method Details

  - ### addRepoChangeListener

    void addRepoChangeListener(RepositoryChangeListenerIfc<Item> repoChangeListener)
    Adds a listener for repository Item change.

  - ### removeRepoChangeListener

    void removeRepoChangeListener(RepositoryChangeListenerIfc<Item> repoChangeListener)
    Removes a listener for repository Item change.

  - ### addItem

    void addItem(Item item) throws TigaseDBException
    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.
    Parameters:
      `item` - a `Item` with all it's configuration parameters.
    Throws:
      `TigaseDBException`

  - ### addItemNoStore

    void addItemNoStore(Item item)
    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.
    Parameters:
      `item` - a `Item` with all it's configuration parameters.

  - ### allItems

    Collection<Item> allItems() throws TigaseDBException
    Returns a collection with all items stored in the repository.
    Throws:
      `TigaseDBException`

  - ### contains

    boolean contains(String key)
    The method checks whether the item is stored in the repository.
    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

    void destroy()
    Method destroys this instance of ComponentRepository releasing resources allocated for this instance of ComponentRepository if possible

  - ### getDefaults

    @Deprecated void getDefaults(Map<String,Object> defs, Map<String,Object> params)
    Deprecated.
    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.
    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.

  - ### getItem

    Item getItem(String key)
    The method returns all item configuration parameters for a key or `null` if the item does not exist in the repository.
    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

    Item getItemInstance()
    Creates a new, uninitialized instance of the repository Item.
    Returns:
      a new, uninitialized instance of the repository Item.

  - ### reload

    void reload() throws TigaseDBException
    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.
    Throws:
      `TigaseDBException`

  - ### removeItem

    void removeItem(String key) throws TigaseDBException
    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.
    Parameters:
      `key` - a `String` with domain name to remove.
    Throws:
      `TigaseDBException`

  - ### removeItemNoStore

    void removeItemNoStore(String key)

  - ### setProperties

    @Deprecated void setProperties(Map<String,Object> properties)
    Deprecated.
    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.
    Parameters:
      `properties` - a `Map` with configuration settings. Content of this `Map` must not be modified. This read-only collection.

  - ### size

    int size()
    The method returns number of items in the repository.
    Returns:
      an `int` value with number of items in the repository.

  - ### store

    void store() throws TigaseDBException
    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.
    Throws:
      `TigaseDBException`

  - ### validateItem

    String validateItem(Item item)
    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.
    Parameters:
      `item` - is an `Item` object to perform validation checking upon.
    Returns:
      `null` on success and an error message otherwise.

  - ### setAutoloadTimer

    void setAutoloadTimer(long delay)
    Sets autoload task to periodically reload data from database.
    Parameters:
      `delay` - in seconds between each database reload.