tigase.pubsub
Class PubSubComponent

java.lang.Object
  extended by tigase.server.BasicComponent
      extended by tigase.server.AbstractMessageReceiver
          extended by tigase.pubsub.PubSubComponent
All Implemented Interfaces:
tigase.conf.Configurable, tigase.disco.XMPPService, DefaultNodeConfigListener, tigase.server.DisableDisco, tigase.server.MessageReceiver, tigase.server.ServerComponent, tigase.stats.StatisticsContainer, tigase.vhosts.VHostListener

public class PubSubComponent
extends tigase.server.AbstractMessageReceiver
implements tigase.disco.XMPPService, tigase.conf.Configurable, tigase.server.DisableDisco, DefaultNodeConfigListener

Class description

Version:
5.1.0, 2010.11.02 at 01:05:02 MDT
Author:
Artur Hefczyc

Field Summary
protected  AdHocConfigCommandModule adHocCommandsModule
           
static String ADMINS_KEY
          Field description
protected  PubSubConfig config
           
static String DEFAULT_LEAF_NODE_CONFIG_KEY
          Field description
protected  DefaultConfigModule defaultConfigModule
           
protected  LeafNodeConfig defaultNodeConfig
           
protected  PubSubDAO directPubSubRepository
           
protected  ElementWriter elementWriter
           
 String[] HOSTNAMES_PROP_VAL
          Field description
protected  Logger log
           
protected  ManageAffiliationsModule manageAffiliationsModule
           
protected  ManageSubscriptionModule manageSubscriptionModule
           
protected  ArrayList<Module> modules
           
protected  NodeConfigModule nodeConfigModule
           
protected  NodeCreateModule nodeCreateModule
           
protected  NodeDeleteModule nodeDeleteModule
           
protected  PendingSubscriptionModule pendingSubscriptionModule
           
protected  PresenceCollectorModule presenceCollectorModule
           
protected  PublishItemModule publishNodeModule
           
protected static String PUBSUB_REPO_CLASS_PROP_KEY
           
protected static String PUBSUB_REPO_POOL_SIZE_PROP_KEY
           
protected static String PUBSUB_REPO_URL_PROP_KEY
           
protected  CachedPubSubRepository pubsubRepository
           
protected  PurgeItemsModule purgeItemsModule
           
protected  RetractItemModule retractItemModule
           
protected  RetrieveItemsModule retrirveItemsModule
           
protected  tigase.disco.ServiceEntity serviceEntity
           
protected  AbstractModule subscribeNodeModule
           
protected  UnsubscribeNodeModule unsubscribeNodeModule
           
protected  tigase.db.UserRepository userRepository
           
protected  XsltTool xslTransformer
           
 
Fields inherited from class tigase.server.AbstractMessageReceiver
HOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, SECOND
 
Fields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, vHostManager
 
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
 
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AMP_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, 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, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK
 
Constructor Summary
PubSubComponent()
          Constructs ...
 
Method Summary
protected  CachedPubSubRepository createPubSubRepository(PubSubDAO directRepository)
           
protected  String extractNodeName(tigase.xml.Element element)
           
 Map<String,Object> getDefaults(Map<String,Object> params)
          Method description
 List<tigase.xml.Element> getDiscoFeatures()
          Method description
 tigase.xml.Element getDiscoInfo(String node, tigase.xmpp.JID jid)
          Method description
 List<tigase.xml.Element> getDiscoItems(String node, tigase.xmpp.JID jid)
          Method description
 void getStatistics(tigase.stats.StatisticsList list)
          Method description
 int hashCodeForPacket(tigase.server.Packet packet)
          This method overwrites default packet hashCode calculation from a destination address to node name if possible so all packets for the same pubsub node are processed on the same thread.
protected  void init()
           
 void initialize(String[] admins, PubSubDAO pubSubDAO, IPubSubRepository createPubSubRepository, LeafNodeConfig defaultNodeConfig)
          Method description
 String myDomain()
          Method description
 void onChangeDefaultNodeConfig()
          Method description
 void process(tigase.xml.Element element, ElementWriter writer)
          Method description
 int processingThreads()
          Method description
 void processPacket(tigase.server.Packet packet)
          Method description
<T extends Module>
T
registerModule(T module)
          Method description
protected  boolean runModules(tigase.xml.Element element, ElementWriter writer)
           
 void setProperties(Map<String,Object> props)
          Method description
 
Methods inherited from class tigase.server.AbstractMessageReceiver
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, clearRegexRoutings, everyHour, everyMinute, everySecond, getMaxQueueSize, getRegexRoutings, isInRegexRoutings, newPacketId, processingInThreads, processingOutThreads, processOutPacket, processPacket, release, removeRegexRouting, setMaxQueueSize, setName, setParent, start, stop
 
Methods inherited from class tigase.server.BasicComponent
addComponentDomain, canCallCommand, checkCommandAcl, getComponentId, getDefHostName, getDiscoCategory, getDiscoCategoryType, getDiscoDescription, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getScriptItems, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initBindings, initializationCompleted, isAdmin, isLocalDomain, isLocalDomainOrComponent, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface tigase.disco.XMPPService
getDiscoFeatures, getDiscoInfo, getDiscoItems
 
Methods inherited from interface tigase.server.ServerComponent
getComponentId, getName, initializationCompleted, processPacket, release, setName
 
Methods inherited from interface tigase.server.MessageReceiver
getDefHostName
 

Field Detail

ADMINS_KEY

public static final String ADMINS_KEY
Field description

See Also:
Constant Field Values

DEFAULT_LEAF_NODE_CONFIG_KEY

public static final String DEFAULT_LEAF_NODE_CONFIG_KEY
Field description

See Also:
Constant Field Values

PUBSUB_REPO_CLASS_PROP_KEY

protected static final String PUBSUB_REPO_CLASS_PROP_KEY
See Also:
Constant Field Values

PUBSUB_REPO_POOL_SIZE_PROP_KEY

protected static final String PUBSUB_REPO_POOL_SIZE_PROP_KEY
See Also:
Constant Field Values

PUBSUB_REPO_URL_PROP_KEY

protected static final String PUBSUB_REPO_URL_PROP_KEY
See Also:
Constant Field Values

adHocCommandsModule

protected AdHocConfigCommandModule adHocCommandsModule

config

protected final PubSubConfig config

defaultConfigModule

protected DefaultConfigModule defaultConfigModule

defaultNodeConfig

protected LeafNodeConfig defaultNodeConfig

directPubSubRepository

protected PubSubDAO directPubSubRepository

elementWriter

protected final ElementWriter elementWriter

HOSTNAMES_PROP_VAL

public String[] HOSTNAMES_PROP_VAL
Field description


log

protected Logger log

manageAffiliationsModule

protected ManageAffiliationsModule manageAffiliationsModule

manageSubscriptionModule

protected ManageSubscriptionModule manageSubscriptionModule

modules

protected final ArrayList<Module> modules

nodeConfigModule

protected NodeConfigModule nodeConfigModule

nodeCreateModule

protected NodeCreateModule nodeCreateModule

nodeDeleteModule

protected NodeDeleteModule nodeDeleteModule

pendingSubscriptionModule

protected PendingSubscriptionModule pendingSubscriptionModule

presenceCollectorModule

protected PresenceCollectorModule presenceCollectorModule

publishNodeModule

protected PublishItemModule publishNodeModule

pubsubRepository

protected CachedPubSubRepository pubsubRepository

purgeItemsModule

protected PurgeItemsModule purgeItemsModule

retractItemModule

protected RetractItemModule retractItemModule

retrirveItemsModule

protected RetrieveItemsModule retrirveItemsModule

serviceEntity

protected tigase.disco.ServiceEntity serviceEntity

subscribeNodeModule

protected AbstractModule subscribeNodeModule

unsubscribeNodeModule

protected UnsubscribeNodeModule unsubscribeNodeModule

userRepository

protected tigase.db.UserRepository userRepository

xslTransformer

protected XsltTool xslTransformer
Constructor Detail

PubSubComponent

public PubSubComponent()
Constructs ...

Method Detail

createPubSubRepository

protected CachedPubSubRepository createPubSubRepository(PubSubDAO directRepository)

extractNodeName

protected String extractNodeName(tigase.xml.Element element)

getDefaults

public Map<String,Object> getDefaults(Map<String,Object> params)
Method description

Specified by:
getDefaults in interface tigase.conf.Configurable
Overrides:
getDefaults in class tigase.server.AbstractMessageReceiver
Parameters:
params -
Returns:

getDiscoFeatures

public List<tigase.xml.Element> getDiscoFeatures()
Method description

Overrides:
getDiscoFeatures in class tigase.server.BasicComponent
Returns:

getDiscoInfo

public tigase.xml.Element getDiscoInfo(String node,
                                       tigase.xmpp.JID jid)
Method description

Overrides:
getDiscoInfo in class tigase.server.BasicComponent
Parameters:
node -
jid -
Returns:

getDiscoItems

public List<tigase.xml.Element> getDiscoItems(String node,
                                              tigase.xmpp.JID jid)
Method description

Overrides:
getDiscoItems in class tigase.server.BasicComponent
Parameters:
node -
jid -
Returns:

getStatistics

public void getStatistics(tigase.stats.StatisticsList list)
Method description

Specified by:
getStatistics in interface tigase.stats.StatisticsContainer
Overrides:
getStatistics in class tigase.server.AbstractMessageReceiver
Parameters:
list -

hashCodeForPacket

public int hashCodeForPacket(tigase.server.Packet packet)
This method overwrites default packet hashCode calculation from a destination address to node name if possible so all packets for the same pubsub node are processed on the same thread. If there is no node name then the source address is used to get a better packets distribution to different threads.

Overrides:
hashCodeForPacket in class tigase.server.AbstractMessageReceiver
Parameters:
packet -
Returns:

init

protected void init()

initialize

public void initialize(String[] admins,
                       PubSubDAO pubSubDAO,
                       IPubSubRepository createPubSubRepository,
                       LeafNodeConfig defaultNodeConfig)
                throws tigase.db.UserNotFoundException,
                       tigase.db.TigaseDBException,
                       RepositoryException
Method description

Parameters:
admins -
pubSubDAO -
createPubSubRepository -
defaultNodeConfig -
Throws:
RepositoryException
tigase.db.TigaseDBException
tigase.db.UserNotFoundException

myDomain

public String myDomain()
Method description

Returns:

onChangeDefaultNodeConfig

public void onChangeDefaultNodeConfig()
Method description

Specified by:
onChangeDefaultNodeConfig in interface DefaultNodeConfigListener

process

public void process(tigase.xml.Element element,
                    ElementWriter writer)
             throws tigase.xmpp.PacketErrorTypeException
Method description

Parameters:
element -
writer -
Throws:
tigase.xmpp.PacketErrorTypeException

processingThreads

public int processingThreads()
Method description

Overrides:
processingThreads in class tigase.server.AbstractMessageReceiver
Returns:

processPacket

public void processPacket(tigase.server.Packet packet)
Method description

Specified by:
processPacket in class tigase.server.AbstractMessageReceiver
Parameters:
packet -

registerModule

public <T extends Module> T registerModule(T module)
Method description

Type Parameters:
T -
Parameters:
module -
Returns:

runModules

protected boolean runModules(tigase.xml.Element element,
                             ElementWriter writer)
                      throws PubSubException
Throws:
PubSubException

setProperties

public void setProperties(Map<String,Object> props)
Method description

Specified by:
setProperties in interface tigase.conf.Configurable
Overrides:
setProperties in class tigase.server.AbstractMessageReceiver
Parameters:
props -


Copyright © 2008-2012 Tigase. All Rights Reserved.