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
-
Field Summary
Modifier and TypeFieldDescriptionprotected ConcurrentSkipListSet<BareJID>
static final String
static final String
protected Map<String,
CommandIfc> protected ScriptEngineManager
static final String
static final String
protected ConcurrentSkipListSet<String>
protected VHostManagerIfc
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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addComponentDomain
(String domain) void
beanConfigurationChanged
(Collection<String> changedFields) Method called when configuration was applied to bean.boolean
canCallCommand
(JID jid, String commandId) Method checks if following adhoc command can execute from this JIDboolean
canCallCommand
(JID jid, String domain, String commandId) boolean
checkCommandAcl
(JID jid, String domain, Set<CmdAcl> acl) Check if entity with JID is allowed ot execute command with passed access control list.boolean
checkCommandAcl
(JID jid, Set<CmdAcl> acl) Check if entity with JID is allowed ot execute command with passed access control list.protected ScriptEngineManager
void
void
void
Method 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 ServiceEntity
getServiceEntityCaps
(JID fromJid) void
getStatistics
(StatisticsList list) getVHostItem
(String domain) boolean
Indicates whether the component accepts packets to all local domains.boolean
Indicates whether the component can handle packets to 'name' subdomain.boolean
Indicates whether the component can handle all packets to non-local domains.void
initBindings
(Bindings binds) Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoid
Method is called byMessageRouter
when all the startup components of the server have been loaded and configured through setProperties(...) call.void
Method will be called, when bean will be created, configured and ready to use.boolean
boolean
Method returns information about whether the initialization process (initializationCompleted()) method has been called.boolean
isLocalDomain
(String domain) boolean
isLocalDomainOrComponent
(String domain) protected boolean
boolean
boolean
boolean
void
nodeConnected
(String node) Method is called on cluster node connection event.void
nodeDisconnected
(String node) Method is called on cluster node disconnection event.protected void
onNodeConnected
(JID jid) protected void
onNodeDisconnected
(JID jid) void
processPacket
(Packet packet, Queue<Packet> results) processPacket
is a blocking processing method implemented by all components.boolean
processScriptCommand
(Packet pc, Queue<Packet> results) void
release()
Method called when component is being stopped and unloaded.protected void
void
removeComponentDomain
(String domain) void
removeServiceDiscoveryItem
(String jid, String node, String description) void
void
setClusterController
(ClusterControllerIfc cl_controller) Set's the configures the cluster controller object for cluster communication and API.void
setCommandsACL
(ConcurrentHashMap<String, CopyOnWriteArraySet<CmdAcl>> commandsACL) void
void
Method used to assign component name (localpart of the component)void
setProperties
(Map<String, Object> props) Deprecated.void
setScriptsBaseDir
(String scriptsBaseDir) void
setVHostManager
(VHostManagerIfc manager) Sets the VHostManager which works on this server installation.void
updateServiceDiscoveryItem
(String jid, String node, String description, boolean admin) void
updateServiceDiscoveryItem
(String jid, String node, String description, boolean admin, String... features) void
updateServiceDiscoveryItem
(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:ConfigurationChangedAware
Method called when configuration was applied to bean.- Specified by:
beanConfigurationChanged
in 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:VHostListener
Indicates 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:
handlesLocalDomains
in interfaceVHostListener
- Returns:
- 'true' if the component accepts packets to local domains 'false' otherwise.
-
handlesNameSubdomains
public boolean handlesNameSubdomains()Description copied from interface:VHostListener
Indicates 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:
handlesNameSubdomains
in interfaceVHostListener
- Returns:
- 'true' if the component accepts packets to 'name' subdomains 'false' otherwise.
-
handlesNonLocalDomains
public boolean handlesNonLocalDomains()Description copied from interface:VHostListener
Indicates 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:
handlesNonLocalDomains
in 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:ServerComponent
Method is called byMessageRouter
when 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:
initializationCompleted
in interfaceServerComponent
-
nodeConnected
Description copied from interface:ClusteredComponentIfc
Method is called on cluster node connection event. This is a notification to the component that a new cluster node has connected.- Specified by:
nodeConnected
in interfaceClusteredComponentIfc
- Parameters:
node
- is a hostname of a cluster node generating the event.
-
nodeDisconnected
Description copied from interface:ClusteredComponentIfc
Method 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:
nodeDisconnected
in interfaceClusteredComponentIfc
- Parameters:
node
- is a hostname of a cluster node generating the event.
-
processPacket
Description copied from interface:ServerComponent
processPacket
is a blocking processing method implemented by all components. This method processes packet and returns results instantly without waiting for any resources.- Specified by:
processPacket
in interfaceServerComponent
- Parameters:
packet
- aPacket
value
-
release
public void release()Description copied from interface:ServerComponent
Method called when component is being stopped and unloaded.- Specified by:
release
in interfaceServerComponent
-
removeComponentDomain
-
removeServiceDiscoveryItem
-
setClusterController
Description copied from interface:ClusteredComponentIfc
Set's the configures the cluster controller object for cluster communication and API.- Specified by:
setClusterController
in interfaceClusteredComponentIfc
- Parameters:
cl_controller
- cluster controller object used for cluster communication
-
updateServiceDiscoveryItem
-
updateServiceDiscoveryItem
-
updateServiceDiscoveryItem
-
updateServiceEntity
public void updateServiceEntity() -
getComponentId
Description copied from interface:ServerComponent
Method returns component jid in form of the component name followed by server hostname as a domain.- Specified by:
getComponentId
in interfaceServerComponent
- Returns:
- jid
-
setCompId
-
getComponentInfo
Description copied from interface:ServerComponent
Allows to obtain various informations about components- Specified by:
getComponentInfo
in interfaceServerComponent
- Returns:
- information about particular component
-
getDefaults
Deprecated.Description copied from interface:Configurable
Returns default configuration settings for the component as aMap
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 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:
getDefaults
in interfaceConfigurable
- Parameters:
params
- is aMap
with 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
Map
with 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:
getDiscoFeatures
in 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:XMPPService
Returns 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:
getDiscoInfo
in 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:XMPPService
Returns 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:
getDiscoItems
in 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:ServerComponent
Method returns name of the component.- Specified by:
getName
in interfaceServerComponent
- Returns:
- name of the component
-
setName
Description copied from interface:ServerComponent
Method used to assign component name (localpart of the component)- Specified by:
setName
in interfaceServerComponent
- Parameters:
name
- to be assigned
-
getStatistics
-
getScriptItems
-
getVHostItem
-
isAdmin
-
isInitializationComplete
public boolean isInitializationComplete()Description copied from interface:ServerComponent
Method returns information about whether the initialization process (initializationCompleted()) method has been called.- Specified by:
isInitializationComplete
in interfaceServerComponent
- Returns:
true
if initialization of the object has been completedfalse
otherwise
-
isLocalDomain
-
isLocalDomainOrComponent
-
isSubdomain
public boolean isSubdomain() -
isTrusted
-
isTrusted
-
setAdmins
-
setProperties
Deprecated.Description copied from interface:Configurable
Sets all configuration properties for the object.- Specified by:
setProperties
in interfaceConfigurable
- Parameters:
props
-Map
with the configuration- Throws:
ConfigurationException
- - if setting configuration will fail which will make it unable to work
-
setCommandsACL
-
setScriptsBaseDir
-
setVHostManager
Description copied from interface:VHostListener
Sets the VHostManager which works on this server installation. The VHostManager allows for accessing vritual domain data.- Specified by:
setVHostManager
in interfaceVHostListener
- Parameters:
manager
- is a reference to VHostManager available on the server installation.
-
getNodesConnected
-
getNodesConnectedWithLocal
-
processScriptCommand
-
initialize
public void initialize()Description copied from interface:Initializable
Method will be called, when bean will be created, configured and ready to use.- Specified by:
initialize
in interfaceInitializable
-
getServiceEntityCaps
-
createScriptEngineManager
-
onNodeConnected
-
onNodeDisconnected
-
getScriptCommands
-
getServiceEntity
-
isNonAdminCommands
protected boolean isNonAdminCommands() -
reloadScripts
protected void reloadScripts()
-