Package tigase.server
Class BasicComponent
java.lang.Object
tigase.server.BasicComponent
- All Implemented Interfaces:
ClusteredComponentIfc,Configurable,XMPPService,ConfigurationChangedAware,Initializable,ServerComponent,VHostListener
- Direct Known Subclasses:
AbstractComponentRegistrator,AbstractMessageReceiver
public class BasicComponent
extends Object
implements Configurable, XMPPService, VHostListener, ClusteredComponentIfc, Initializable, ConfigurationChangedAware
Created: Oct 17, 2009 7:49:05 PM
- Author:
- Artur Hefczyc
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ConcurrentSkipListSet<BareJID> static final Stringstatic final Stringprotected Map<String, CommandIfc> protected ScriptEngineManagerstatic final Stringstatic final Stringprotected ConcurrentSkipListSet<String> protected VHostManagerIfcFields 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_ACKFields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddComponentDomain(String domain) voidbeanConfigurationChanged(Collection<String> changedFields) Method called when configuration was applied to bean.booleancanCallCommand(JID jid, String commandId) Method checks if following adhoc command can execute from this JIDbooleancanCallCommand(JID jid, String domain, String commandId) booleancheckCommandAcl(JID jid, String domain, Set<CmdAcl> acl) Check if entity with JID is allowed ot execute command with passed access control list.booleancheckCommandAcl(JID jid, Set<CmdAcl> acl) Check if entity with JID is allowed ot execute command with passed access control list.protected ScriptEngineManagervoidvoidvoidMethod returns component jid in form of the component name followed by server hostname as a domain.Allows to obtain various informations about componentsgetDefaults(Map<String, Object> params) Deprecated.Method returns category of a component used for service discovery responses.Method returns component category type used for service discovery responses.Method returns description used for service discovery responses.getDiscoExtensionsForm(String domain) Method returns list of features provided by this component.getDiscoFeatures(JID from) Method returns list of features provided by this component for provided JID.getDiscoInfo(String node, JID jid, JID from) Returns service discovery info for the component.getDiscoItems(String node, JID jid, JID from) Returns service discovery items for the component.getName()Method returns name of the component.protected Map<String, CommandIfc> getScriptItems(String node, JID jid, JID from) protected ServiceEntitygetServiceEntityCaps(JID fromJid) voidgetStatistics(StatisticsList list) getVHostItem(String domain) booleanIndicates whether the component accepts packets to all local domains.booleanIndicates whether the component can handle packets to 'name' subdomain.booleanIndicates whether the component can handle all packets to non-local domains.voidinitBindings(Bindings binds) Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoidMethod is called byMessageRouterwhen all the startup components of the server have been loaded and configured through setProperties(...) call.voidMethod will be called, when bean will be created, configured and ready to use.booleanbooleanMethod returns information about whether the initialization process (initializationCompleted()) method has been called.booleanisLocalDomain(String domain) booleanisLocalDomainOrComponent(String domain) protected booleanbooleanbooleanbooleanvoidnodeConnected(String node) Method is called on cluster node connection event.voidnodeDisconnected(String node) Method is called on cluster node disconnection event.protected voidonNodeConnected(JID jid) protected voidonNodeDisconnected(JID jid) voidprocessPacket(Packet packet, Queue<Packet> results) processPacketis a blocking processing method implemented by all components.booleanprocessScriptCommand(Packet pc, Queue<Packet> results) voidrelease()Method called when component is being stopped and unloaded.protected voidvoidremoveComponentDomain(String domain) voidremoveServiceDiscoveryItem(String jid, String node, String description) voidvoidsetClusterController(ClusterControllerIfc cl_controller) Set's the configures the cluster controller object for cluster communication and API.voidsetCommandsACL(ConcurrentHashMap<String, CopyOnWriteArraySet<CmdAcl>> commandsACL) voidvoidMethod used to assign component name (localpart of the component)voidsetProperties(Map<String, Object> props) Deprecated.voidsetScriptsBaseDir(String scriptsBaseDir) voidsetVHostManager(VHostManagerIfc manager) Sets the VHostManager which works on this server installation.voidupdateServiceDiscoveryItem(String jid, String node, String description, boolean admin) voidupdateServiceDiscoveryItem(String jid, String node, String description, boolean admin, String... features) voidupdateServiceDiscoveryItem(String jid, String node, String description, String category, String type, boolean admin, String... features) void
-
Field Details
-
ALL_PROP_KEY
- See Also:
-
COMMAND_PROP_NODE
- See Also:
-
SCRIPTS_DIR_PROP_DEF
- See Also:
-
SCRIPTS_DIR_PROP_KEY
- See Also:
-
admins
@ConfigField(desc="List of admins JIDs", alias="admins") protected ConcurrentSkipListSet<BareJID> admins -
scriptCommands
-
trusted
-
vHostManager
-
scriptEngineManager
-
-
Constructor Details
-
BasicComponent
public BasicComponent()
-
-
Method Details
-
addComponentDomain
-
beanConfigurationChanged
Description copied from interface:ConfigurationChangedAwareMethod called when configuration was applied to bean.- Specified by:
beanConfigurationChangedin interfaceConfigurationChangedAware- Parameters:
changedFields- collection of field names which were changed
-
canCallCommand
Method checks if following adhoc command can execute from this JID- Parameters:
jid- - JID of entity which wants to execute commandcommandId- - ID of an adhoc command- Returns:
- a value of
boolean
-
canCallCommand
-
checkCommandAcl
Check if entity with JID is allowed ot execute command with passed access control list.- Parameters:
jid- - entity JIDacl- - access control list- Returns:
- a value of
boolean
-
checkCommandAcl
Check if entity with JID is allowed ot execute command with passed access control list.- Parameters:
jid- - entity JIDdomain- - domain for which check permissionacl- - access control list- Returns:
- a value of
boolean
-
everyHour
public void everyHour() -
everyMinute
public void everyMinute() -
everySecond
public void everySecond() -
handlesLocalDomains
public boolean handlesLocalDomains()Description copied from interface:VHostListenerIndicates whether the component accepts packets to all local domains. The best example would be SM component which usually handles all requests sent to any local domain.- Specified by:
handlesLocalDomainsin interfaceVHostListener- Returns:
- 'true' if the component accepts packets to local domains 'false' otherwise.
-
handlesNameSubdomains
public boolean handlesNameSubdomains()Description copied from interface:VHostListenerIndicates whether the component can handle packets to 'name' subdomain. Name subdomain is an artificial domain created from the component name and the domain name. The best example would be a 'MUC' component or a 'PubSub' component. They are usually named respectively 'muc' and 'pubsub' and they accept requests sent to domains 'muc.tigase.org' or 'pubsub.tigase.org', even though a local domain is just 'tigase.org'.- Specified by:
handlesNameSubdomainsin interfaceVHostListener- Returns:
- 'true' if the component accepts packets to 'name' subdomains 'false' otherwise.
-
handlesNonLocalDomains
public boolean handlesNonLocalDomains()Description copied from interface:VHostListenerIndicates whether the component can handle all packets to non-local domains. S2s connection manager component is the best example of the component which handles all requests sent to non-local domains.- Specified by:
handlesNonLocalDomainsin interfaceVHostListener- Returns:
- 'true' if the component accepts packets to non-local domains 'false' otherwise.
-
initBindings
Initialize a mapping of key/value pairs which can be used in scripts loaded by the server- Parameters:
binds- A mapping of key/value pairs, all of whose keys are Strings.
-
initializationCompleted
public void initializationCompleted()Description copied from interface:ServerComponentMethod is called byMessageRouterwhen all the startup components of the server have been loaded and configured through setProperties(...) call. At this point the whole server should be loaded and functional, except initializations taking place in this routine.- Specified by:
initializationCompletedin interfaceServerComponent
-
nodeConnected
Description copied from interface:ClusteredComponentIfcMethod is called on cluster node connection event. This is a notification to the component that a new cluster node has connected.- Specified by:
nodeConnectedin interfaceClusteredComponentIfc- Parameters:
node- is a hostname of a cluster node generating the event.
-
nodeDisconnected
Description copied from interface:ClusteredComponentIfcMethod is called on cluster node disconnection event. This is a notification to the component that there was network connection lost to one of the cluster nodes.- Specified by:
nodeDisconnectedin interfaceClusteredComponentIfc- Parameters:
node- is a hostname of a cluster node generating the event.
-
processPacket
Description copied from interface:ServerComponentprocessPacketis a blocking processing method implemented by all components. This method processes packet and returns results instantly without waiting for any resources.- Specified by:
processPacketin interfaceServerComponent- Parameters:
packet- aPacketvalue
-
release
public void release()Description copied from interface:ServerComponentMethod called when component is being stopped and unloaded.- Specified by:
releasein interfaceServerComponent
-
removeComponentDomain
-
removeServiceDiscoveryItem
-
setClusterController
Description copied from interface:ClusteredComponentIfcSet's the configures the cluster controller object for cluster communication and API.- Specified by:
setClusterControllerin interfaceClusteredComponentIfc- Parameters:
cl_controller- cluster controller object used for cluster communication
-
updateServiceDiscoveryItem
-
updateServiceDiscoveryItem
-
updateServiceDiscoveryItem
-
updateServiceEntity
public void updateServiceEntity() -
getComponentId
Description copied from interface:ServerComponentMethod returns component jid in form of the component name followed by server hostname as a domain.- Specified by:
getComponentIdin interfaceServerComponent- Returns:
- jid
-
setCompId
-
getComponentInfo
Description copied from interface:ServerComponentAllows to obtain various informations about components- Specified by:
getComponentInfoin interfaceServerComponent- Returns:
- information about particular component
-
getDefaults
Deprecated.Description copied from interface:ConfigurableReturns default configuration settings for the component as aMapwith keys as configuration property IDs and values as the configuration property values. All the default parameters returned from this method are later passed to thesetProperties(...)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.- Specified by:
getDefaultsin interfaceConfigurable- Parameters:
params- is aMapwith some initial properties set for the starting up server. These parameters can be used as a hints to generate component's default configuration.- Returns:
- a
Mapwith the component default configuration.
-
getDefHostName
-
getDefVHostItem
-
getDiscoCategory
Method returns category of a component used for service discovery responses.- Returns:
- category of a component
-
getDiscoCategoryType
Method returns component category type used for service discovery responses.- Returns:
- category type of a component
-
getDiscoDescription
Method returns description used for service discovery responses.- Returns:
- description of a component
-
getDiscoFeatures
Method returns list of features provided by this component.- Returns:
- list of features
-
getDiscoFeatures
Method returns list of features provided by this component for provided JID.- Specified by:
getDiscoFeaturesin interfaceXMPPService- Parameters:
from- a request sender address. Some service disco elements are meant to be available only to system administrarors. The component is responsible to check whether the sender is the component administrator and return results appropriate.- Returns:
- list of features
-
getDiscoInfo
Description copied from interface:XMPPServiceReturns service discovery info for the component. If the jid is null then this is info for the top level request. SM may return disco info on the top level. Other components should not.- Specified by:
getDiscoInfoin interfaceXMPPService- Parameters:
node- is service discovery node for which the request is made. Is normally null for the component top level request.jid- is the jid to which the request has been made.from- is the request sender address. Some service discovery information is only meant for administrators.- Returns:
- returns an XML Element with service discovery data.
-
getDiscoExtensionsForm
-
getDiscoItems
Description copied from interface:XMPPServiceReturns service discovery items for the component. If the JID is null then this is request for the top level request. SM may return disco items on the top level, other components should just return it's top level service discovery item for null node.- Specified by:
getDiscoItemsin interfaceXMPPService- Parameters:
node- is a service discovery node for which the request has been made.jid- is the jid to which the request has been made.from- is the request sender address. Some service discovery information is only meant for administrators.- Returns:
- a list of service discovery items for this component or the component itself disco item for the top level request.
-
getName
Description copied from interface:ServerComponentMethod returns name of the component.- Specified by:
getNamein interfaceServerComponent- Returns:
- name of the component
-
setName
Description copied from interface:ServerComponentMethod used to assign component name (localpart of the component)- Specified by:
setNamein interfaceServerComponent- Parameters:
name- to be assigned
-
getStatistics
-
getScriptItems
-
getVHostItem
-
isAdmin
-
isInitializationComplete
public boolean isInitializationComplete()Description copied from interface:ServerComponentMethod returns information about whether the initialization process (initializationCompleted()) method has been called.- Specified by:
isInitializationCompletein interfaceServerComponent- Returns:
trueif initialization of the object has been completedfalseotherwise
-
isLocalDomain
-
isLocalDomainOrComponent
-
isSubdomain
public boolean isSubdomain() -
isTrusted
-
isTrusted
-
setAdmins
-
setProperties
Deprecated.Description copied from interface:ConfigurableSets all configuration properties for the object.- Specified by:
setPropertiesin interfaceConfigurable- Parameters:
props-Mapwith the configuration- Throws:
ConfigurationException- - if setting configuration will fail which will make it unable to work
-
setCommandsACL
-
setScriptsBaseDir
-
setVHostManager
Description copied from interface:VHostListenerSets the VHostManager which works on this server installation. The VHostManager allows for accessing vritual domain data.- Specified by:
setVHostManagerin interfaceVHostListener- Parameters:
manager- is a reference to VHostManager available on the server installation.
-
getNodesConnected
-
getNodesConnectedWithLocal
-
processScriptCommand
-
initialize
public void initialize()Description copied from interface:InitializableMethod will be called, when bean will be created, configured and ready to use.- Specified by:
initializein interfaceInitializable
-
getServiceEntityCaps
-
createScriptEngineManager
-
onNodeConnected
-
onNodeDisconnected
-
getScriptCommands
-
getServiceEntity
-
isNonAdminCommands
protected boolean isNonAdminCommands() -
reloadScripts
protected void reloadScripts()
-