tigase.server

## Class AbstractComponentRegistrator<E extends ServerComponent>

- java.lang.Object
- - tigase.server.BasicComponent
  - - tigase.server.AbstractComponentRegistrator<E>

- Type Parameters:
    `E` -
  All Implemented Interfaces:
    Configurable, XMPPService, ComponentRegistrator, ServerComponent, VHostListener
  Direct Known Subclasses:
    ClusterController, ConfiguratorAbstract, StatisticsCollector, VHostManager, XMPPServiceCollector

      public abstract class AbstractComponentRegistrator<E extends ServerComponent>
      extends BasicComponent
      implements ComponentRegistrator

  This is an archetype of a special types of classes which collect some data from Tigase components or provide these data to components. They normally do not process normall packets and are usually accessed by admins via ad-hoc commands. Good examples of such components are `StatisticsCollector` or `Configurator`.

  Extensions of these class can process packets addresses to the component via `processPacket(Packet packet, Queue<Packet> results)` method. Alternatively scripting API can be used via ad-hoc commands.

  The class does not have any queues buffering packets or separate threads for packets processing. All packets are processed from `MessageRouter` threads via `processPacket(Packet packet, Queue<Packet> results)` method. Hence this is important that processing implemented in extensions to the class does not take long time. In particular no DB processing is expected. Created: Tue Nov 22 22:57:44 2005
  Version:
    $Rev$
  Author:
    Artur Hefczyc

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Map<String,E>` | `components` A collection of server components which implement special interface, related to the functionality provided by extension of the class.

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

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

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

      `ADMINS_PROP_KEY, AMP_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_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_SRECV_NAME, DEF_SSEND_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, 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, SRECV_COMP_CLASS_NAME, SSEND_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, 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 and Description
    `AbstractComponentRegistrator()` Creates a new `AbstractComponentRegistrator` instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `addComponent(ServerComponent component)` Method checks whether the component is of a correct type, adds it to the internal `components` collection and calls `componentAdded(...)` callback.
    `abstract void` | `componentAdded(E component)` Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
    `abstract void` | `componentRemoved(E component)` Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
    `boolean` | `deleteComponent(ServerComponent component)` Method removes specified component from the internal `components` collection and calls `componentRemoved(...)` callback method.
    `E` | `getComponent(String name)` Method returns a component for a specified component name from internal `components` collection or `null` of there is no such component in the collection.
    `abstract 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.
    `String` | `newPacketId(String prefix)` Method generates and returns an unique packet ID.
    `void` | `release()` Method is called when the component is being stopped and potentially removed from the system to release all resources associated with the component.

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

      `addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processPacket, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setName, setProperties, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem`

    - ### 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, getName, initializationCompleted, isInitializationComplete, processPacket, setName`

- - ### Field Detail

    - #### components

          protected Map<String,E extends ServerComponent> components

      A collection of server components which implement special interface, related to the functionality provided by extension of the class.

  - ### Constructor Detail

    - #### AbstractComponentRegistrator

          public AbstractComponentRegistrator()

      Creates a new `AbstractComponentRegistrator` instance.

  - ### Method Detail

    - #### componentAdded

          public abstract void componentAdded(E component)

      Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internal `components` collection.
      Parameters:
        `component` - is a reference to the component just added to the collection.

    - #### componentRemoved

          public abstract void componentRemoved(E component)

      Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internal `components` collection.
      Parameters:
        `component` - is a reference to the component removed from the collection.

    - #### isCorrectType

          public abstract 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. Result of the method determines whether the component can be added to the internal `components` collection.
      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.

    - #### addComponent

          public boolean addComponent(ServerComponent component)

      Method checks whether the component is of a correct type, adds it to the internal `components` collection and calls `componentAdded(...)` callback.
      Specified by:
        `addComponent` in interface `ComponentRegistrator`
      Parameters:
        `component` - a reference to the component which is being added to the intenal collection.
      Returns:
        a `boolean` value of `true` if the component has been added to the internal collection and `false` otherwise.

    - #### deleteComponent

          public boolean deleteComponent(ServerComponent component)

      Method removes specified component from the internal `components` collection and calls `componentRemoved(...)` callback method.
      Specified by:
        `deleteComponent` in interface `ComponentRegistrator`
      Parameters:
        `component` - is a reference to the component being removed.
      Returns:
        a `boolean` value of `true` if the component has been removed from the internal collection and `false` otherwise.

    - #### getComponent

          public E getComponent(String name)

      Method returns a component for a specified component name from internal `components` collection or `null` of there is no such component in the collection.
      Parameters:
        `name` - is a `String` value of the component name.
      Returns:
        a reference to the component found in the internal collection or `null` if no component has been found.

    - #### newPacketId

          public String newPacketId(String prefix)

      Method generates and returns an unique packet ID. The ID is unique within running Tigase instance. The method can be overwritten to change the generation of the packet ID.
      Parameters:
        `prefix` - is a `String` value of the ID profix or `null` if no prefix is necessary.
      Returns:
        a `String` instance of a new packet ID.

    - #### release

          public void release()

      Method is called when the component is being stopped and potentially removed from the system to release all resources associated with the component. After a call to this method no further processing or calls to `processPacket` or any ad-hoc commands is expected.
      Specified by:
        `release` in interface `ServerComponent`
      Overrides:
        `release` in class `BasicComponent`

Copyright © 2013 Tigase. All rights reserved.