Package tigase.pubsub.repository.cached
Class CachedPubSubRepository<T>
- java.lang.Object
-
- tigase.pubsub.repository.cached.CachedPubSubRepository<T>
-
- All Implemented Interfaces:
tigase.kernel.beans.Initializable
,IItems.IListnener
,IPubSubRepository
,tigase.stats.StatisticHolder
,tigase.xmpp.mam.MAMRepository<Query,tigase.xmpp.mam.MAMRepository.Item>
@Bean(name="repository", parent=PubSubComponent.class, active=true) public class CachedPubSubRepository<T> extends java.lang.Object implements IPubSubRepository, tigase.stats.StatisticHolder, tigase.kernel.beans.Initializable, IItems.IListnener
Implementation of IPubSubRepository interface providing access to the database for data storage with caching.- Version:
- 5.0.0, 2010.03.27 at 05:20:46 GMT
- Author:
- Artur Hefczyc
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
CachedPubSubRepository.NodeAffiliationProvider<T>
static class
CachedPubSubRepository.NodeKey
static class
CachedPubSubRepository.RootCollectionSet
static class
CachedPubSubRepository.SizedCache<V>
-
Nested classes/interfaces inherited from interface tigase.pubsub.repository.IPubSubRepository
IPubSubRepository.IListener, IPubSubRepository.RepositorySupplier<T>, IPubSubRepository.RootCollectionSetIfc
-
-
Field Summary
Fields Modifier and Type Field Description protected IPubSubConfig
config
protected IPubSubDAO<T,tigase.db.DataSource,Query>
dao
protected java.util.logging.Logger
log
protected Cache<CachedPubSubRepository.NodeKey,Node>
nodes
protected java.util.concurrent.atomic.AtomicLong
nodesCount
protected PubSubLogic
pubSubLogic
-
Constructor Summary
Constructors Constructor Description CachedPubSubRepository()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addMAMItem(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String uuid, tigase.xml.Element message, java.lang.String itemId)
void
addToRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
protected CachedPubSubRepository.NodeKey
createKey(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
void
createNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.xmpp.jid.BareJID ownerJid, AbstractNodeConfig nodeConfig, NodeType nodeType, java.lang.String collection)
void
createService(tigase.xmpp.jid.BareJID serviceJID, boolean isPublic)
void
deleteNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
void
deleteService(tigase.xmpp.jid.BareJID userJid)
void
destroy()
void
everyHour()
void
everyMinute()
void
everySecond()
java.lang.String[]
getChildNodes(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
protected Node
getNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
IAffiliations
getNodeAffiliations(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
protected java.util.List<Node<T>>
getNodeAndSubnodes(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.util.function.Predicate<Node<T>> filterWithSubnodes, java.util.function.Predicate<Node<T>> filter)
AbstractNodeConfig
getNodeConfig(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
protected Node
getNodeFromCache(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
IItems
getNodeItems(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
java.util.List<IItems.IItem>
getNodeItems(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.xmpp.jid.JID requester, java.util.Date after, java.util.Date before, tigase.xmpp.rsm.RSM rsm)
INodeMeta
getNodeMeta(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
long
getNodesCount(tigase.xmpp.jid.BareJID serviceJID)
ISubscriptions
getNodeSubscriptions(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
IPubSubDAO
getPubSubDAO()
java.lang.String[]
getRootCollection(tigase.xmpp.jid.BareJID serviceJid)
protected IPubSubRepository.RootCollectionSetIfc
getRootCollectionSet(tigase.xmpp.jid.BareJID serviceJid)
java.util.List<tigase.xmpp.jid.BareJID>
getServices(tigase.xmpp.jid.BareJID domain, java.lang.Boolean isPublic)
void
getStatistics(java.lang.String name, tigase.stats.StatisticsList stats)
java.util.Map<java.lang.String,UsersAffiliation>
getUserAffiliations(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.BareJID jid)
java.util.Map<tigase.xmpp.jid.BareJID,tigase.xmpp.impl.roster.RosterElement>
getUserRoster(tigase.xmpp.jid.BareJID owner)
java.util.Map<java.lang.String,UsersSubscription>
getUserSubscriptions(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.BareJID userJid)
protected boolean
hasAccessPermission(Node node, tigase.xmpp.jid.JID requester, PubSubLogic.Action action)
void
init()
void
initialize()
protected boolean
isServiceAutoCreated()
void
itemDeleted(tigase.xmpp.jid.BareJID serviceJID, java.lang.String node, java.lang.String id)
void
itemWritten(tigase.xmpp.jid.BareJID serviceJID, java.lang.String node, java.lang.String id, java.lang.String publisher, tigase.xml.Element item, java.lang.String uuid)
protected Node
loadNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
protected void
loadRootCollections(CachedPubSubRepository.RootCollectionSet rootCollection)
protected IAffiliationsCached
newNodeAffiliations(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, T nodeId, IPubSubRepository.RepositorySupplier<java.util.Map<tigase.xmpp.jid.BareJID,UsersAffiliation>> affiliationSupplier)
protected ISubscriptionsCached
newNodeSubscriptions(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, T nodeId, IPubSubRepository.RepositorySupplier<java.util.Map<tigase.xmpp.jid.BareJID,UsersSubscription>> subscriptionsSupplier)
Query
newQuery()
protected void
nodeCollectionChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String oldCollection, java.lang.String newCollection)
void
queryItems(Query query, tigase.xmpp.mam.MAMRepository.ItemHandler<Query,tigase.xmpp.mam.MAMRepository.Item> itemHandler)
void
removeFromRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
protected void
saveNode(Node<T> node, int iteration)
protected void
serviceRemoved(tigase.xmpp.jid.BareJID userJid)
void
setDao(IPubSubDAO<T,tigase.db.DataSource,Query> dao)
void
setStatisticsPrefix(java.lang.String prefix)
void
statisticExecutedIn(long executionTime)
void
update(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, AbstractNodeConfig nodeConfig)
void
update(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, IAffiliations nodeAffiliations)
void
update(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, ISubscriptions nodeSubscriptions)
protected void
updateNodeConfiguration(tigase.xmpp.jid.BareJID serviceJID, java.lang.String nodeName, tigase.form.Form config)
boolean
validateItem(tigase.xmpp.jid.BareJID serviceJID, java.lang.String node, java.lang.String id, java.lang.String publisher, tigase.xml.Element item)
-
-
-
Field Detail
-
config
@Inject protected IPubSubConfig config
-
dao
@Inject protected IPubSubDAO<T,tigase.db.DataSource,Query> dao
-
log
protected java.util.logging.Logger log
-
pubSubLogic
@Inject protected PubSubLogic pubSubLogic
-
nodes
protected Cache<CachedPubSubRepository.NodeKey,Node> nodes
-
nodesCount
protected final java.util.concurrent.atomic.AtomicLong nodesCount
-
-
Method Detail
-
isServiceAutoCreated
protected boolean isServiceAutoCreated()
-
addToRootCollection
public void addToRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
addToRootCollection
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
createNode
public void createNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.xmpp.jid.BareJID ownerJid, AbstractNodeConfig nodeConfig, NodeType nodeType, java.lang.String collection) throws tigase.component.exceptions.RepositoryException, PubSubException
- Specified by:
createNode
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
PubSubException
-
createService
public void createService(tigase.xmpp.jid.BareJID serviceJID, boolean isPublic) throws tigase.component.exceptions.RepositoryException
- Specified by:
createService
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getServices
public java.util.List<tigase.xmpp.jid.BareJID> getServices(tigase.xmpp.jid.BareJID domain, java.lang.Boolean isPublic) throws tigase.component.exceptions.RepositoryException
- Specified by:
getServices
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
deleteNode
public void deleteNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
deleteNode
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceIPubSubRepository
-
everyHour
public void everyHour()
- Specified by:
everyHour
in interfacetigase.stats.StatisticHolder
-
everyMinute
public void everyMinute()
- Specified by:
everyMinute
in interfacetigase.stats.StatisticHolder
-
everySecond
public void everySecond()
- Specified by:
everySecond
in interfacetigase.stats.StatisticHolder
-
updateNodeConfiguration
protected void updateNodeConfiguration(tigase.xmpp.jid.BareJID serviceJID, java.lang.String nodeName, tigase.form.Form config)
-
getChildNodes
public java.lang.String[] getChildNodes(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
getChildNodes
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeAffiliations
public IAffiliations getNodeAffiliations(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
getNodeAffiliations
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeConfig
public AbstractNodeConfig getNodeConfig(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
getNodeConfig
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeMeta
public INodeMeta getNodeMeta(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
getNodeMeta
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeItems
public IItems getNodeItems(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
getNodeItems
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeItems
public java.util.List<IItems.IItem> getNodeItems(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, tigase.xmpp.jid.JID requester, java.util.Date after, java.util.Date before, tigase.xmpp.rsm.RSM rsm) throws tigase.component.exceptions.ComponentException, tigase.component.exceptions.RepositoryException
- Specified by:
getNodeItems
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.ComponentException
tigase.component.exceptions.RepositoryException
-
getNodeSubscriptions
public ISubscriptions getNodeSubscriptions(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
getNodeSubscriptions
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodesCount
public long getNodesCount(tigase.xmpp.jid.BareJID serviceJID) throws tigase.component.exceptions.RepositoryException
- Specified by:
getNodesCount
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getPubSubDAO
public IPubSubDAO getPubSubDAO()
- Specified by:
getPubSubDAO
in interfaceIPubSubRepository
-
setDao
public void setDao(IPubSubDAO<T,tigase.db.DataSource,Query> dao)
-
getRootCollection
public java.lang.String[] getRootCollection(tigase.xmpp.jid.BareJID serviceJid) throws tigase.component.exceptions.RepositoryException
- Specified by:
getRootCollection
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getStatistics
public void getStatistics(java.lang.String name, tigase.stats.StatisticsList stats)
- Specified by:
getStatistics
in interfacetigase.stats.StatisticHolder
-
getUserAffiliations
public java.util.Map<java.lang.String,UsersAffiliation> getUserAffiliations(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.BareJID jid) throws tigase.component.exceptions.RepositoryException
- Specified by:
getUserAffiliations
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getUserRoster
public java.util.Map<tigase.xmpp.jid.BareJID,tigase.xmpp.impl.roster.RosterElement> getUserRoster(tigase.xmpp.jid.BareJID owner) throws tigase.component.exceptions.RepositoryException
- Specified by:
getUserRoster
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
getUserSubscriptions
public java.util.Map<java.lang.String,UsersSubscription> getUserSubscriptions(tigase.xmpp.jid.BareJID serviceJid, tigase.xmpp.jid.BareJID userJid) throws tigase.component.exceptions.RepositoryException
- Specified by:
getUserSubscriptions
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
init
public void init()
- Specified by:
init
in interfaceIPubSubRepository
-
initialize
public void initialize()
- Specified by:
initialize
in interfacetigase.kernel.beans.Initializable
-
queryItems
public void queryItems(Query query, tigase.xmpp.mam.MAMRepository.ItemHandler<Query,tigase.xmpp.mam.MAMRepository.Item> itemHandler) throws tigase.component.exceptions.RepositoryException, tigase.component.exceptions.ComponentException
- Specified by:
queryItems
in interfacetigase.xmpp.mam.MAMRepository<Query,tigase.xmpp.mam.MAMRepository.Item>
- Throws:
tigase.component.exceptions.RepositoryException
tigase.component.exceptions.ComponentException
-
newQuery
public Query newQuery()
- Specified by:
newQuery
in interfacetigase.xmpp.mam.MAMRepository<Query,tigase.xmpp.mam.MAMRepository.Item>
-
removeFromRootCollection
public void removeFromRootCollection(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Specified by:
removeFromRootCollection
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
setStatisticsPrefix
public void setStatisticsPrefix(java.lang.String prefix)
- Specified by:
setStatisticsPrefix
in interfacetigase.stats.StatisticHolder
-
statisticExecutedIn
public void statisticExecutedIn(long executionTime)
- Specified by:
statisticExecutedIn
in interfacetigase.stats.StatisticHolder
-
update
public void update(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, AbstractNodeConfig nodeConfig) throws tigase.component.exceptions.RepositoryException, PubSubException
- Specified by:
update
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
PubSubException
-
update
public void update(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, IAffiliations nodeAffiliations) throws tigase.component.exceptions.RepositoryException
- Specified by:
update
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
update
public void update(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, ISubscriptions nodeSubscriptions) throws tigase.component.exceptions.RepositoryException
- Specified by:
update
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
deleteService
public void deleteService(tigase.xmpp.jid.BareJID userJid) throws tigase.component.exceptions.RepositoryException
- Specified by:
deleteService
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
addMAMItem
public void addMAMItem(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String uuid, tigase.xml.Element message, java.lang.String itemId) throws tigase.component.exceptions.RepositoryException
- Specified by:
addMAMItem
in interfaceIPubSubRepository
- Throws:
tigase.component.exceptions.RepositoryException
-
validateItem
public boolean validateItem(tigase.xmpp.jid.BareJID serviceJID, java.lang.String node, java.lang.String id, java.lang.String publisher, tigase.xml.Element item) throws PubSubException
- Specified by:
validateItem
in interfaceIItems.IListnener
- Throws:
PubSubException
-
itemWritten
public void itemWritten(tigase.xmpp.jid.BareJID serviceJID, java.lang.String node, java.lang.String id, java.lang.String publisher, tigase.xml.Element item, java.lang.String uuid)
- Specified by:
itemWritten
in interfaceIItems.IListnener
-
itemDeleted
public void itemDeleted(tigase.xmpp.jid.BareJID serviceJID, java.lang.String node, java.lang.String id)
- Specified by:
itemDeleted
in interfaceIItems.IListnener
-
createKey
protected CachedPubSubRepository.NodeKey createKey(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
-
getNode
protected Node getNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Throws:
tigase.component.exceptions.RepositoryException
-
loadNode
protected Node loadNode(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName) throws tigase.component.exceptions.RepositoryException
- Throws:
tigase.component.exceptions.RepositoryException
-
newNodeAffiliations
protected IAffiliationsCached newNodeAffiliations(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, T nodeId, IPubSubRepository.RepositorySupplier<java.util.Map<tigase.xmpp.jid.BareJID,UsersAffiliation>> affiliationSupplier) throws tigase.component.exceptions.RepositoryException
- Throws:
tigase.component.exceptions.RepositoryException
-
newNodeSubscriptions
protected ISubscriptionsCached newNodeSubscriptions(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, T nodeId, IPubSubRepository.RepositorySupplier<java.util.Map<tigase.xmpp.jid.BareJID,UsersSubscription>> subscriptionsSupplier) throws tigase.component.exceptions.RepositoryException
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeFromCache
protected Node getNodeFromCache(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName)
-
getRootCollectionSet
protected IPubSubRepository.RootCollectionSetIfc getRootCollectionSet(tigase.xmpp.jid.BareJID serviceJid) throws tigase.component.exceptions.RepositoryException
- Throws:
tigase.component.exceptions.RepositoryException
-
loadRootCollections
protected void loadRootCollections(CachedPubSubRepository.RootCollectionSet rootCollection) throws tigase.component.exceptions.RepositoryException
- Throws:
tigase.component.exceptions.RepositoryException
-
getNodeAndSubnodes
protected java.util.List<Node<T>> getNodeAndSubnodes(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.util.function.Predicate<Node<T>> filterWithSubnodes, java.util.function.Predicate<Node<T>> filter) throws tigase.component.exceptions.RepositoryException, tigase.component.exceptions.ComponentException
- Throws:
tigase.component.exceptions.RepositoryException
tigase.component.exceptions.ComponentException
-
hasAccessPermission
protected boolean hasAccessPermission(Node node, tigase.xmpp.jid.JID requester, PubSubLogic.Action action)
-
serviceRemoved
protected void serviceRemoved(tigase.xmpp.jid.BareJID userJid)
-
nodeCollectionChanged
protected void nodeCollectionChanged(tigase.xmpp.jid.BareJID serviceJid, java.lang.String nodeName, java.lang.String oldCollection, java.lang.String newCollection)
-
-