Package tigase.server
Class AbstractComponentRegistrator<E extends ServerComponent>
- java.lang.Object
-
- tigase.server.BasicComponent
-
- tigase.server.AbstractComponentRegistrator<E>
-
- All Implemented Interfaces:
ClusteredComponentIfc,Configurable,XMPPService,ConfigurationChangedAware,Initializable,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 areStatisticsCollectororConfigurator.
Extensions of these class can process packets addresses to the component viaprocessPacket(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 fromMessageRouterthreads viaprocessPacket(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- Author:
- Artur Hefczyc
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class tigase.server.BasicComponent
BasicComponent.ServerInfoVHostItemExtension
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.String,E>componentsA 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, 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 AbstractComponentRegistrator()Creates a newAbstractComponentRegistratorinstance.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanaddComponent(ServerComponent component)Method checks whether the component is of a correct type, adds it to the internalcomponentscollection and callscomponentAdded(...)callback.abstract voidcomponentAdded(E component)Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internalcomponentscollection.abstract voidcomponentRemoved(E component)Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internalcomponentscollection.booleandeleteComponent(ServerComponent component)Method removes specified component from the internalcomponentscollection and callscomponentRemoved(...)callback method.EgetComponent(java.lang.String name)Method returns a component for a specified component name from internalcomponentscollection ornullof there is no such component in the collection.abstract booleanisCorrectType(ServerComponent component)Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class.java.lang.StringnewPacketId(java.lang.String prefix)Method generates and returns an unique packet ID.voidrelease()Method called when component is being stopped and unloaded.-
Methods inherited from class tigase.server.BasicComponent
addComponentDomain, beanConfigurationChanged, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, everyHour, everyMinute, everySecond, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, getStatistics, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, initialize, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processPacket, processScriptCommand, reloadScripts, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setCompId, setName, 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, setName
-
-
-
-
Field Detail
-
components
protected java.util.Map<java.lang.String,E extends ServerComponent> components
A collection of server components which implement special interface, related to the functionality provided by extension of the class.
-
-
Method Detail
-
componentAdded
public abstract void componentAdded(E component) throws ConfigurationException
Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internalcomponentscollection.- Parameters:
component- is a reference to the component just added to the collection.- Throws:
ConfigurationException
-
componentRemoved
public abstract void componentRemoved(E component)
Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internalcomponentscollection.- 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 internalcomponentscollection.- Parameters:
component- is a reference to the component being checked.- Returns:
- a
booleanvalue oftrueif the component is of a correct type andfalseotherwise.
-
addComponent
public boolean addComponent(ServerComponent component) throws ConfigurationException
Method checks whether the component is of a correct type, adds it to the internalcomponentscollection and callscomponentAdded(...)callback.- Specified by:
addComponentin interfaceComponentRegistrator- Parameters:
component- a reference to the component which is being added to the intenal collection.- Returns:
- a
booleanvalue oftrueif the component has been added to the internal collection andfalseotherwise. - Throws:
ConfigurationException
-
deleteComponent
public boolean deleteComponent(ServerComponent component)
Method removes specified component from the internalcomponentscollection and callscomponentRemoved(...)callback method.- Specified by:
deleteComponentin interfaceComponentRegistrator- Parameters:
component- is a reference to the component being removed.- Returns:
- a
booleanvalue oftrueif the component has been removed from the internal collection andfalseotherwise.
-
getComponent
public E getComponent(java.lang.String name)
Method returns a component for a specified component name from internalcomponentscollection ornullof there is no such component in the collection.- Parameters:
name- is aStringvalue of the component name.- Returns:
- a reference to the component found in the internal collection or
nullif no component has been found.
-
newPacketId
public java.lang.String newPacketId(java.lang.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 aStringvalue of the ID profix ornullif no prefix is necessary.- Returns:
- a
Stringinstance of a new packet ID.
-
release
public void release()
Description copied from interface:ServerComponentMethod called when component is being stopped and unloaded.- Specified by:
releasein interfaceServerComponent- Overrides:
releasein classBasicComponent
-
-