tigase.server
Class AbstractComponentRegistrator<E extends ServerComponent>

java.lang.Object
  extended by tigase.server.BasicComponent
      extended by 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: 2054 $
Author:
Artur Hefczyc

Field Summary
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, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, vHostManager
 
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AUTH_REPO_CLASS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_URL_PROP_KEY, 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_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_S2S_NAME, DEF_SM_NAME, DEF_SRECV_NAME, DEF_SSEND_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_CLASS_PROP_VAL, DRUPAL_REPO_URL_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_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, 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_POOL_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUS_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, SRECV_COMP_CLASS_NAME, SSEND_COMP_CLASS_NAME, 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_REPO_CLASS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL
 
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
 
Constructor Summary
AbstractComponentRegistrator()
          Creates a new AbstractComponentRegistrator instance.
 
Method Summary
 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, getComponentId, getDefaults, getDefHostName, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, isAdmin, isLocalDomain, isLocalDomainOrComponent, 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, 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 © 2001-2006 Tigase Developers Team. All rights Reserved.