Class AbstractSDComponentRepositoryBean<Item extends RepositoryItem>

java.lang.Object
tigase.db.beans.SDRepositoryBean<ComponentRepositoryDataSourceAware<Item,DataSource>>
tigase.db.comp.AbstractSDComponentRepositoryBean<Item>
All Implemented Interfaces:
Iterable<Item>, ComponentRepository<Item>, Repository, ConfigurationChangedAware, Initializable, RegistrarBean, UnregisterAware
Direct Known Subclasses:
ClusterConnectionManager.DefClConRepositoryBean, VHostManager.DefVHostRepositoryBean

public abstract class AbstractSDComponentRepositoryBean<Item extends RepositoryItem> extends SDRepositoryBean<ComponentRepositoryDataSourceAware<Item,DataSource>> implements ComponentRepository<Item>
Class implements ComponentRepository interfaces and extends SDRepositoryBean and is designed to be based bean used by other classes responsible for loading proper implementation of ComponentRepository depending on used implementation of DataSource.
Created by andrzej on 18.03.2016.
  • Constructor Details

    • AbstractSDComponentRepositoryBean

      public AbstractSDComponentRepositoryBean()
  • Method Details

    • setRepository

      public void setRepository(ComponentRepositoryDataSourceAware<Item,DataSource> repository)
      Overrides:
      setRepository in class SDRepositoryBean<ComponentRepositoryDataSourceAware<Item extends RepositoryItem,DataSource>>
    • addRepoChangeListener

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

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

      public void addItem(Item 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<Item extends RepositoryItem>
      Parameters:
      item - a Item with all it's configuration parameters.
      Throws:
      TigaseDBException
    • addItemNoStore

      public void addItemNoStore(Item 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<Item extends RepositoryItem>
      Parameters:
      item - a Item with all it's configuration parameters.
    • allItems

      public Collection<Item> allItems() throws TigaseDBException
      Description copied from interface: ComponentRepository
      Returns a collection with all items stored in the repository.
      Specified by:
      allItems in interface ComponentRepository<Item extends RepositoryItem>
      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<Item extends RepositoryItem>
      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<Item extends RepositoryItem>
    • 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<Item extends RepositoryItem>
      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

      public Item 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<Item extends RepositoryItem>
      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 Item getItemInstance()
      Description copied from interface: ComponentRepository
      Creates a new, uninitialized instance of the repository Item.
      Specified by:
      getItemInstance in interface ComponentRepository<Item extends RepositoryItem>
      Returns:
      a new, uninitialized instance of the repository Item.
    • 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<Item extends RepositoryItem>
      Throws:
      TigaseDBException
    • 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<Item extends RepositoryItem>
      Parameters:
      key - a String with domain name to remove.
      Throws:
      TigaseDBException
    • removeItemNoStore

      public void removeItemNoStore(String key)
      Specified by:
      removeItemNoStore in interface ComponentRepository<Item extends RepositoryItem>
    • 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<Item extends RepositoryItem>
      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<Item extends RepositoryItem>
      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<Item extends RepositoryItem>
      Throws:
      TigaseDBException
    • validateItem

      public String validateItem(Item 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<Item extends RepositoryItem>
      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<Item extends RepositoryItem>
      Parameters:
      delay - in seconds between each database reload.
    • iterator

      public Iterator<Item> iterator()
      Specified by:
      iterator in interface Iterable<Item extends RepositoryItem>
    • initRepository

      public void initRepository(String resource_uri, Map<String,String> params) throws DBInitException
      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.
    • toString

      public String toString()
      Overrides:
      toString in class Object