CTX - Context of component Should be extended.public abstract class AbstractComponent<CTX extends Context> extends AbstractMessageReceiver implements XMPPService, DisableDisco
| Modifier and Type | Field and Description |
|---|---|
protected static String |
COMPONENT |
protected CTX |
context
Context of component.
|
protected AdHocCommandModule.ScriptCommandProcessor |
defaultScriptCommandProcessor |
protected Logger |
log
Logger
|
protected ModulesManager |
modulesManager
Modules manager
|
protected PacketWriter |
writer |
HOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, maxQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, SCHEDULER_THREADS_PROP_KEY, SECONDadmins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, vHostManagerCMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNSADMINS_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_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, 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| Constructor and Description |
|---|
AbstractComponent()
Constructs ...
|
AbstractComponent(Context context) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addOutPacket(Packet packet,
AsyncCallback asyncCallback) |
protected abstract CTX |
createContext()
Creates
Context particular for component implementation. |
protected Module |
createModuleInstance(Class<Module> moduleClass)
Creates instance of module.
|
void |
everyMinute()
Utility method executed precisely every minute.
|
abstract String |
getComponentVersion()
Returns version of component.
|
protected CTX |
getContext()
Returns
Context of component. |
protected abstract Map<String,Class<? extends Module>> |
getDefaultModulesList()
Returns default map of components.
|
Map<String,Object> |
getDefaults(Map<String,Object> params)
Returns default configuration settings for the component as a
Map with keys as configuration property IDs and values as the
configuration property values. |
ModuleProvider |
getModuleProvider()
Returns
ModuleProvider. |
PacketWriter |
getWriter()
Returns
PacketWriter. |
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts
loaded by the server
|
protected void |
initModules(Map<String,Object> props)
Initialising component modules.
|
abstract boolean |
isDiscoNonAdmin()
Is this component discoverable by disco#items for domain by non admin
users.
|
boolean |
isRegistered(String id)
Checks if module with given identifier is registered already.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
<M extends Module> |
registerModule(String id,
M module)
Registers module.
|
protected void |
sendException(Packet packet,
ComponentException e)
Converts
ComponentException to XMPP error stanza and sends it to
sender of packet. |
void |
setProperties(Map<String,Object> props)
Sets all configuration properties for the object.
|
void |
updateServiceEntity()
Method description
|
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, getStatistics, hashCodeForPacket, isInRegexRoutings, newPacketId, processingInThreads, processingOutThreads, processingThreads, processOutPacket, processPacket, release, removeRegexRouting, schedulerThreads, setMaxQueueSize, setName, setParent, start, stopaddComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItemclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetDiscoFeatures, getDiscoInfo, getDiscoItemsgetComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release, setNamegetDefHostNameprotected static final String COMPONENT
protected final AdHocCommandModule.ScriptCommandProcessor defaultScriptCommandProcessor
protected final Logger log
protected final ModulesManager modulesManager
protected PacketWriter writer
public AbstractComponent()
public AbstractComponent(Context context)
protected void addOutPacket(Packet packet, AsyncCallback asyncCallback)
protected abstract CTX createContext()
Context particular for component implementation. Called
once.protected Module createModuleInstance(Class<Module> moduleClass) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
moduleClass - class of moduleInstantiationExceptionIllegalAccessExceptionIllegalArgumentExceptionInvocationTargetExceptionpublic void everyMinute()
AbstractMessageReceivereveryMinute in class AbstractMessageReceiverpublic abstract String getComponentVersion()
protected abstract Map<String,Class<? extends Module>> getDefaultModulesList()
init.properties:<component_name>/modules/<module_name>[S]=<module_class>public Map<String,Object> getDefaults(Map<String,Object> params)
AbstractMessageReceiverMap with keys as configuration property IDs and values as the
configuration property values. All the default parameters returned from
this method are later passed to the setProperties(...) method.
Some of them may have changed value if they have been overwritten in the
server configuration. The configuration property value can be of any of the
basic types: int, long, boolean,
String.getDefaults in interface ConfigurablegetDefaults in class AbstractMessageReceiverparams - is a Map with some initial properties set for the
starting up server. These parameters can be used as a hints to
generate component's default configuration.Map with the component default configuration.public ModuleProvider getModuleProvider()
ModuleProvider. It allows to retrieve instance of module
by given ID.ModuleProvider.public PacketWriter getWriter()
PacketWriter.PacketWriter.public void initBindings(Bindings binds)
BasicComponentinitBindings in class BasicComponentbinds - A mapping of key/value pairs, all of whose keys are Strings.protected void initModules(Map<String,Object> props) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
props - component properties.InstantiationExceptionIllegalAccessExceptionIllegalArgumentExceptionInvocationTargetExceptionpublic abstract boolean isDiscoNonAdmin()
true - if yespublic boolean isRegistered(String id)
id - module identifier.true if module is registered. Otherwise
false.public void processPacket(Packet packet)
AbstractMessageReceiverPacket processing method. It is called
concurrently from many threads so implementing it in thread save manner is
essential. The method is called for each packet addressed to the component.
Packet instance may be processed by different
parts of the server, different components or plugins at the same time.
Therefore this is very important to tread the Packet instance
as unmodifiable object.
addOutPacket(Packet) method.processPacket in class AbstractMessageReceiverpacket - is an instance of the Packet class passed for
processing.public <M extends Module> M registerModule(String id, M module)
id - identifier of module.module - module instance.protected void sendException(Packet packet, ComponentException e)
ComponentException to XMPP error stanza and sends it to
sender of packet.packet - packet what caused exception.e - exception.public void setProperties(Map<String,Object> props) throws ConfigurationException
ConfigurablesetProperties in interface ConfigurablesetProperties in class AbstractMessageReceiverprops - Map with the configurationConfigurationException - - if setting configuration will
fail which will make it unable
to workpublic void updateServiceEntity()
BasicComponentupdateServiceEntity in class BasicComponentCopyright © 2016 "Tigase, Inc.". All rights reserved.