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, PACKET_DELIVERY_RETRY_COUNT_PROP_KEY, SCHEDULER_THREADS_PROP_KEY, SECOND
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
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_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, 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, 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 . |
ResponseManager |
getResponseManager() |
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, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everySecond, getMaxQueueSize, getRegexRoutings, getStatistics, hashCodeForPacket, isInRegexRoutings, newPacketId, processingInThreads, processingOutThreads, processingThreads, processOutPacket, processPacket, release, removeRegexRouting, schedulerThreads, setMaxQueueSize, setName, setParent, start, stop
addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getComponentInfo, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoInfo, getDiscoItems, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setClusterController, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getDiscoFeatures, getDiscoInfo, getDiscoItems
getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release, setName
getName
getDefHostName
protected 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 moduleInstantiationException
IllegalAccessException
IllegalArgumentException
InvocationTargetException
public void everyMinute()
AbstractMessageReceiver
everyMinute
in class AbstractMessageReceiver
public 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)
AbstractMessageReceiver
Map
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 Configurable
getDefaults
in class AbstractMessageReceiver
params
- 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 ResponseManager getResponseManager()
public PacketWriter getWriter()
PacketWriter
.PacketWriter
.public void initBindings(Bindings binds)
BasicComponent
initBindings
in class BasicComponent
binds
- 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.InstantiationException
IllegalAccessException
IllegalArgumentException
InvocationTargetException
public 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)
AbstractMessageReceiver
Packet
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 AbstractMessageReceiver
packet
- 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
Configurable
setProperties
in interface Configurable
setProperties
in class AbstractMessageReceiver
props
- Map
with the configurationConfigurationException
- - if setting configuration will
fail which will make it unable
to workpublic void updateServiceEntity()
BasicComponent
updateServiceEntity
in class BasicComponent
Copyright © 2018 "Tigase, Inc.". All rights reserved.