Package tigase.vhosts

Class VHostJDBCRepository

All Implemented Interfaces:
Iterable<VHostItem>, ComponentRepository<VHostItem>, ComponentRepositoryDataSourceAware<VHostItem,DataSource>, DataSourceAware<DataSource>, Repository, Initializable, UnregisterAware, VHostComponentRepository, VHostComponentRepositoryDataSourceAware<DataSource>

@ConfigAliases(@ConfigAlias(field="items",alias="virtual-hosts")) public class VHostJDBCRepository extends UserRepoRepository<VHostItem> implements VHostComponentRepositoryDataSourceAware<DataSource>
This implementation stores virtual domains in the UserRepository database. It loads initial settings and virtual hosts from the configuration file and then loads more vhosts from the database. Virtual domains from the database can overwrite (disable) vhosts loaded from the configuration file.
This implementation keeps all virtual hosts and their parameters in a single database field. This might not be very efficient if you want to manager big number of virtual domains. It is sufficient for hundreds of vhosts. If you need thousands of VHosts support I advice to implement this storage in more efficient way using separate database tables instead of UserRepository. Please note there is a limit of about 300 vhosts if you use Derby database.
Since:
Nov 29, 2008 2:32:48 PM
Author:
Artur Hefczyc
  • Constructor Details

    • VHostJDBCRepository

      public VHostJDBCRepository()
  • Method Details

    • 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<VHostItem>
    • getConfigKey

      public String getConfigKey()
      Specified by:
      getConfigKey in class ConfigRepository<VHostItem>
    • getDefaultPropetyItems

      public String[] getDefaultPropetyItems()
      Overrides:
      getDefaultPropetyItems in class ConfigRepository<VHostItem>
    • getItemInstance

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

      public String getItemsListPKey()
      Overrides:
      getItemsListPKey in class UserRepoRepository<VHostItem>
    • getPropertyKey

      public String getPropertyKey()
      Specified by:
      getPropertyKey in class ConfigRepository<VHostItem>
    • getRepoUser

      public tigase.xmpp.jid.BareJID getRepoUser()
      Specified by:
      getRepoUser in class UserRepoRepository<VHostItem>
    • 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.
    • reload

      public void reload()
      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<VHostItem>
      Overrides:
      reload in class UserRepoRepository<VHostItem>
    • addItemNoStore

      public void addItemNoStore(VHostItem 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<VHostItem>
      Overrides:
      addItemNoStore in class ConfigRepository<VHostItem>
      Parameters:
      item - a Item with all it's configuration parameters.
    • setDef_srv_address

      public void setDef_srv_address(String address)
    • validateItem

      public String validateItem(VHostItem 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<VHostItem>
      Overrides:
      validateItem in class ConfigRepository<VHostItem>
      Parameters:
      item - is an Item object to perform validation checking upon.
      Returns:
      null on success and an error message otherwise.
    • setDataSource

      public void setDataSource(DataSource dataSource)
      Description copied from interface: DataSourceAware
      Method called to provide class with instance of a data source.
      Specified by:
      setDataSource in interface DataSourceAware<DataSource>
    • getMainVHostName

      public String getMainVHostName()
    • setMainVHostName

      public void setMainVHostName(String vhost)
    • getDefaultVHostItem

      public VHostItem getDefaultVHostItem()
      Specified by:
      getDefaultVHostItem in interface VHostComponentRepository
    • setExtensionManager

      public void setExtensionManager(VHostItemExtensionManager extensionManager)
    • setItemsOld

      public void setItemsOld(String[] items_arr)
      Overrides:
      setItemsOld in class ConfigRepository<VHostItem>
    • setVhostDefaultValues

      public void setVhostDefaultValues(VHostItemDefaults vhostDefaultValues)