Package tigase.vhosts

# Class VHostManager

java.lang.Object
tigase.server.BasicComponent
tigase.server.AbstractComponentRegistrator<VHostListener>
tigase.vhosts.VHostManager

All Implemented Interfaces:
  `ClusteredComponentIfc`, `Configurable`, `XMPPService`, `ConfigurationChangedAware`, `Initializable`, `RegistrarBean`, `ComponentRegistrator`, `ServerComponent`, `StatisticsContainer`, `StatisticsContainerIfc`, `VHostListener`, `VHostManagerIfc`

@Bean(name="vhost-man", parent=Kernel.class, active=true, exportable=true) @ConfigType({DefaultMode,SessionManagerMode,ConnectionManagersMode,ComponentMode}) public class VHostManager extends AbstractComponentRegistrator<VHostListener> implements VHostManagerIfc, StatisticsContainer, RegistrarBean
Describe class VHostManager here.
Created: Fri Nov 21 14:28:20 2008

Author:
  Artur Hefczyc

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `VHostManager.DefVHostRepositoryBean`

  ## Nested classes/interfaces inherited from class tigase.server.BasicComponent

  `BasicComponent.ServerInfoVHostItemExtension`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected VHostComponentRepository`
  `repo`

  ### Fields inherited from class tigase.server.AbstractComponentRegistrator

  `components`

  ### Fields inherited from class tigase.server.BasicComponent

  `admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager`

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

  `ADMINS_PROP_KEY, AMP_CLASS_NAME, AMP_CLUST_CLASS_NAME, AUTH_DOMAIN_POOL_CLASS, AUTH_REPO_DOMAINS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_POOL_CLASS, AUTH_REPO_URL_PROP_KEY, BOSH_CLUST_COMP_CLASS_NAME, BOSH_COMP_CLASS_NAME, C2S_CLUST_COMP_CLASS_NAME, C2S_COMP_CLASS_NAME, CL_COMP_CLASS_NAME, CLUSTER_CONECT, CLUSTER_CONTR_CLASS_NAME, CLUSTER_LISTEN, CLUSTER_MODE, CLUSTER_NODES, CLUSTER_NODES_PROP_KEY, COMP_PROT_CLASS_NAME, COMPONENT_ID_PROP_KEY, DEF_AMP_NAME, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_COMP_PROT_NAME, DEF_EVENTBUS_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DEF_WS2S_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_URL_PROP_VAL, DRUPALWP_REPO_CLASS_PROP_VAL, DUMMY_REPO_CLASS_PROP_VAL, EVENTBUS_CLASS_NAME, EXT_COMP_CLASS_NAME, GEN_ADMINS, GEN_AUTH_DB, GEN_AUTH_DB_URI, GEN_COMP_CLASS, GEN_COMP_NAME, GEN_CONF, GEN_CONFIG, GEN_CONFIG_ALL, GEN_CONFIG_COMP, GEN_CONFIG_CS, GEN_CONFIG_DEF, GEN_CONFIG_SM, GEN_DEBUG, GEN_DEBUG_PACKAGES, GEN_EXT_COMP, GEN_MAX_QUEUE_SIZE, GEN_SCRIPT_DIR, GEN_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_USER_DB_URI_PROP_KEY, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITOR_CLASS_NAME, MONITOR_CLUST_CLASS_NAME, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, PGSQL_REPO_CLASS_PROP_VAL, PGSQL_REPO_URL_PROP_VAL, ROUTER_COMP_CLASS_NAME, S2S_CLUST_COMP_CLASS_NAME, S2S_COMP_CLASS_NAME, SHARED_AUTH_REPO_PARAMS_PROP_KEY, SHARED_AUTH_REPO_PROP_KEY, SHARED_USER_REPO_PARAMS_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUST_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, STANZA_WHITE_CHAR_ACK, STANZA_XMPP_ACK, STATS_CLASS_NAME, STRINGPREP_PROCESSOR, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_DOMAIN_POOL_CLASS, USER_REPO_DOMAINS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_CLASS, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, VHOST_MAN_CLUST_CLASS_NAME, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK`

  ### Fields inherited from interface tigase.disco.XMPPService

  `CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `VHostManager()`
  Creates a new `VHostManager` instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addComponentDomain(String domain)`
  Adds a component domain to the collection of local component domains.
  `void`
  `componentAdded(VHostListener component)`
  Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
  `void`
  `componentRemoved(VHostListener component)`
  Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
  `String`
  `generateSecret()`
  `List<JID>`
  `getAllVHosts()`
  Method returns a list of all hosted VHosts.
  `ComponentRepository<VHostItem>`
  `getComponentRepository()`
  `ServerComponent[]`
  `getComponentsForLocalDomain(String domain)`
  The method returns an array with server components which can process packets for a given local domain.
  `ServerComponent[]`
  `getComponentsForNonLocalDomain(String domain)`
  The method returns an array of server components which can process packets sent to non-local domain.
  `BareJID`
  `getDefVHostItem()`
  Method `getDefVHostItem` returns a default VHost for the installation.
  `String`
  `getDiscoCategoryType()`
  Method returns component category type used for service discovery responses.
  `String`
  `getDiscoDescription()`
  Method returns description used for service discovery responses.
  `void`
  `getStatistics(StatisticsList list)`
  `VHostItem`
  `getVHostItem(String domain)`
  Returns an object with all domain properties for given domain.
  `VHostItem`
  `getVHostItemDomainOrComponent(String domain)`
  Returns an object with all domain properties for a given domain or base domain if passed domain is name of subdomain used by component.
  `void`
  `initBindings(Bindings binds)`
  Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
  `void`
  `initializeRepository()`
  `boolean`
  `isAnonymousEnabled(String domain)`
  This method checks whether anonymous login is enabled for a given domain.
  `boolean`
  `isCorrectType(ServerComponent component)`
  Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class.
  `boolean`
  `isLocalDomain(String domain)`
  This method checks whether given domain is server by this server instance.
  `boolean`
  `isLocalDomainOrComponent(String domain)`
  Method check if domains is locally hosted as a vhost or a component of a vhost.
  `void`
  `register(Kernel kernel)`
  Method called when bean is being registered allowing developer to programatically register other beans.
  `void`
  `removeComponentDomain(String domain)`
  Removes a domain previously registered by a component.
  `void`
  `setName(String name)`
  Method used to assign component name (localpart of the component)
  `void`
  `unregister(Kernel kernel)`
  Method called while bean is being unregistered.

  ### Methods inherited from class tigase.server.AbstractComponentRegistrator

  `addComponent, deleteComponent, getComponent, newPacketId, release`

  ### Methods inherited from class tigase.server.BasicComponent

  `beanConfigurationChanged, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, everyHour, everyMinute, everySecond, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, initialize, isAdmin, isInitializationComplete, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processPacket, processScriptCommand, reloadScripts, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setCompId, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity`

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

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

  ### Methods inherited from interface tigase.server.ServerComponent

  `getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release`

  ### Methods inherited from interface tigase.stats.StatisticsContainerIfc

  `getName`

- ## Field Details

  - ### repo

    @Inject protected VHostComponentRepository repo

- ## Constructor Details

  - ### VHostManager

    public VHostManager()
    Creates a new `VHostManager` instance.

- ## Method Details

  - ### addComponentDomain

    public void addComponentDomain(String domain)
    Description copied from interface: `VHostManagerIfc`
    Adds a component domain to the collection of local component domains. This is mainly needed/used by an external components connecting to the server and binding hostnames. Normally the s2s component have no way of knowing about this new and temporary domains handled by the server and would refuse all connections for these domains. Adding them to a collection of component domains allows the s2s to detect them and accept connection for them.
    Specified by:
      `addComponentDomain` in interface `VHostManagerIfc`
    Overrides:
      `addComponentDomain` in class `BasicComponent`
    Parameters:
      `domain` - is a component domain name added to the collection.

  - ### componentAdded

    public void componentAdded(VHostListener component)
    Description copied from class: `AbstractComponentRegistrator`
    Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
    Specified by:
      `componentAdded` in class `AbstractComponentRegistrator<VHostListener>`
    Parameters:
      `component` - is a reference to the component just added to the collection.

  - ### componentRemoved

    public void componentRemoved(VHostListener component)
    Description copied from class: `AbstractComponentRegistrator`
    Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
    Specified by:
      `componentRemoved` in class `AbstractComponentRegistrator<VHostListener>`
    Parameters:
      `component` - is a reference to the component removed from the collection.

  - ### initBindings

    public void initBindings(Bindings binds)
    Description copied from class: `BasicComponent`
    Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
    Overrides:
      `initBindings` in class `BasicComponent`
    Parameters:
      `binds` - A mapping of key/value pairs, all of whose keys are Strings.

  - ### removeComponentDomain

    public void removeComponentDomain(String domain)
    Description copied from interface: `VHostManagerIfc`
    Removes a domain previously registered by a component. It should not be normally used.
    Specified by:
      `removeComponentDomain` in interface `VHostManagerIfc`
    Overrides:
      `removeComponentDomain` in class `BasicComponent`
    Parameters:
      `domain` - is a component domain name being removed from the collection.

  - ### register

    public void register(Kernel kernel)
    Description copied from interface: `RegistrarBean`
    Method called when bean is being registered allowing developer to programatically register other beans.
    Specified by:
      `register` in interface `RegistrarBean`
    Parameters:
      `kernel` - - instance from local scope

  - ### unregister

    public void unregister(Kernel kernel)
    Description copied from interface: `RegistrarBean`
    Method called while bean is being unregistered.
    Specified by:
      `unregister` in interface `RegistrarBean`
    Parameters:
      `kernel` - - instance from local scope

  - ### getAllVHosts

    public List<JID> getAllVHosts()
    Description copied from interface: `VHostManagerIfc`
    Method returns a list of all hosted VHosts.
    Specified by:
      `getAllVHosts` in interface `VHostManagerIfc`

  - ### getComponentsForLocalDomain

    public ServerComponent[] getComponentsForLocalDomain(String domain)
    Description copied from interface: `VHostManagerIfc`
    The method returns an array with server components which can process packets for a given local domain. If the domain is not local `null` is returned. The given domain may also consist of: component name `ServerComponent.getName()` plus any local domain but only if the component returns `true` from method call: `VHostListener.handlesNameSubdomains()`
    Specified by:
      `getComponentsForLocalDomain` in interface `VHostManagerIfc`
    Parameters:
      `domain` - is a `String` with a domain name to check. It may by just a local domain or string created with component name and localdomain.
    Returns:
      an array with ServerComponents which can handle packets for a given domain or `null` if no component found for a given domain.

  - ### getComponentsForNonLocalDomain

    public ServerComponent[] getComponentsForNonLocalDomain(String domain)
    Description copied from interface: `VHostManagerIfc`
    The method returns an array of server components which can process packets sent to non-local domain. Most commonly there is only one such component: server-2-server connections manager. It is possible however there might be more such components. All of them will get the packet for processing.
    Specified by:
      `getComponentsForNonLocalDomain` in interface `VHostManagerIfc`
    Parameters:
      `domain` - is a `String` with a domain to check. At the moment this parameter is ignored. In the future it will be possible to assign a specific component for any non-local domain.
    Returns:
      an array with ServerComponents which can handle packets to non-local domains.

  - ### getDefVHostItem

    public BareJID getDefVHostItem()
    Description copied from interface: `VHostManagerIfc`
    Method `getDefVHostItem` returns a default VHost for the installation. In most cases this is the first VHost defined in the server configuration.
    Specified by:
      `getDefVHostItem` in interface `VHostManagerIfc`
    Overrides:
      `getDefVHostItem` in class `BasicComponent`
    Returns:
      a `BareJID` value of the default VHost for the installation.

  - ### getDiscoCategoryType

    public String getDiscoCategoryType()
    Description copied from class: `BasicComponent`
    Method returns component category type used for service discovery responses.
    Overrides:
      `getDiscoCategoryType` in class `BasicComponent`
    Returns:
      category type of a component

  - ### getDiscoDescription

    public String getDiscoDescription()
    Description copied from class: `BasicComponent`
    Method returns description used for service discovery responses.
    Overrides:
      `getDiscoDescription` in class `BasicComponent`
    Returns:
      description of a component

  - ### getStatistics

    public void getStatistics(StatisticsList list)
    Specified by:
      `getStatistics` in interface `StatisticsContainerIfc`
    Overrides:
      `getStatistics` in class `BasicComponent`

  - ### getVHostItem

    public VHostItem getVHostItem(String domain)
    Description copied from interface: `VHostManagerIfc`
    Returns an object with all domain properties for given domain.
    Specified by:
      `getVHostItem` in interface `VHostManagerIfc`
    Overrides:
      `getVHostItem` in class `BasicComponent`
    Parameters:
      `domain` - is a domain name
    Returns:
      a VHostItem object with all domain properties.

  - ### getVHostItemDomainOrComponent

    public VHostItem getVHostItemDomainOrComponent(String domain)
    Description copied from interface: `VHostManagerIfc`
    Returns an object with all domain properties for a given domain or base domain if passed domain is name of subdomain used by component.
    Specified by:
      `getVHostItemDomainOrComponent` in interface `VHostManagerIfc`
    Parameters:
      `domain` - is a domain name
    Returns:
      a VHostItem object with all domain properties.

  - ### isAnonymousEnabled

    public boolean isAnonymousEnabled(String domain)
    Description copied from interface: `VHostManagerIfc`
    This method checks whether anonymous login is enabled for a given domain. That is it checks whether this domains is local and anonymousEnabled parameter for this domain is set to true.
    Specified by:
      `isAnonymousEnabled` in interface `VHostManagerIfc`
    Parameters:
      `domain` - is a String with domain name to check.
    Returns:
      a boolean value indicating whether given domain is enabled for anonymous logins or not.

  - ### isCorrectType

    public boolean isCorrectType(ServerComponent component)
    Description copied from class: `AbstractComponentRegistrator`
    Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class. Result of the method determines whether the component can be added to the internal `components` collection.
    Specified by:
      `isCorrectType` in class `AbstractComponentRegistrator<VHostListener>`
    Parameters:
      `component` - is a reference to the component being checked.
    Returns:
      a `boolean` value of `true` if the component is of a correct type and `false` otherwise.

  - ### isLocalDomain

    public boolean isLocalDomain(String domain)
    Description copied from interface: `VHostManagerIfc`
    This method checks whether given domain is server by this server instance. That is if this domain is local to this server installation. It doesn't check however whether the domain is disabled or enabled. It only checks if tthe list of local domains contains this virtual host.
    Specified by:
      `isLocalDomain` in interface `VHostManagerIfc`
    Overrides:
      `isLocalDomain` in class `BasicComponent`
    Parameters:
      `domain` - is a String with domain name to check.
    Returns:
      a boolean value indicating whether given domain is local or not.

  - ### isLocalDomainOrComponent

    public boolean isLocalDomainOrComponent(String domain)
    Description copied from interface: `VHostManagerIfc`
    Method check if domains is locally hosted as a vhost or a component of a vhost.
    Specified by:
      `isLocalDomainOrComponent` in interface `VHostManagerIfc`
    Overrides:
      `isLocalDomainOrComponent` in class `BasicComponent`
    Returns:
      true - if domain is locally hosted as a vhost of a component of a vhost.

  - ### setName

    public void setName(String name)
    Description copied from interface: `ServerComponent`
    Method used to assign component name (localpart of the component)
    Specified by:
      `setName` in interface `ServerComponent`
    Overrides:
      `setName` in class `BasicComponent`
    Parameters:
      `name` - to be assigned

  - ### initializeRepository

    public void initializeRepository() throws TigaseDBException
    Throws:
      `TigaseDBException`

  - ### generateSecret

    public String generateSecret()

  - ### getComponentRepository

    public ComponentRepository<VHostItem> getComponentRepository()