Class PubSubPersistenceManager


  • public class PubSubPersistenceManager
    extends Object
    A manager responsible for ensuring node persistence.
    Author:
    Matt Tucker
    • Constructor Detail

      • PubSubPersistenceManager

        public PubSubPersistenceManager()
    • Method Detail

      • createNode

        public static void createNode​(Node node)
        Creates and stores the node configuration in the database.
        Parameters:
        node - The newly created node.
      • updateNode

        public static void updateNode​(Node node)
        Updates the node configuration in the database.
        Parameters:
        node - The updated node.
      • removeNode

        public static boolean removeNode​(Node node)
        Removes the specified node from the DB.
        Parameters:
        node - The node that is being deleted.
        Returns:
        true If the operation was successful.
      • loadNodes

        public static void loadNodes​(PubSubService service)
        Loads all nodes from the database and adds them to the PubSub service.
        Parameters:
        service - the pubsub service that is hosting the nodes.
      • loadNode

        public static void loadNode​(PubSubService service,
                                    String nodeId)
        Loads a node from the database and adds them to the PubSub service.
        Parameters:
        service - the pubsub service that is hosting the nodes.
        nodeId - the specific node to load
      • saveAffiliation

        public static void saveAffiliation​(Node node,
                                           NodeAffiliate affiliate,
                                           boolean create)
        Update the DB with the new affiliation of the user in the node.
        Parameters:
        node - The node where the affiliation of the user was updated.
        affiliate - The new affiliation of the user in the node.
        create - True if this is a new affiliate.
      • removeAffiliation

        public static void removeAffiliation​(Node node,
                                             NodeAffiliate affiliate)
        Removes the affiliation and subsription state of the user from the DB.
        Parameters:
        node - The node where the affiliation of the user was updated.
        affiliate - The existing affiliation and subsription state of the user in the node.
      • saveSubscription

        public static void saveSubscription​(Node node,
                                            NodeSubscription subscription,
                                            boolean create)
        Updates the DB with the new subsription of the user to the node.
        Parameters:
        node - The node where the user has subscribed to.
        subscription - The new subscription of the user to the node.
        create - True if this is a new affiliate.
      • removeSubscription

        public static void removeSubscription​(NodeSubscription subscription)
        Removes the subscription of the user from the DB.
        Parameters:
        subscription - The existing subsription of the user to the node.
      • savePublishedItem

        public static void savePublishedItem​(PublishedItem item)
        Creates and stores the published item in the database. Note that the item will be cached temporarily before being flushed asynchronously to the database. The write cache can be tuned using the following two properties:
           "xmpp.pubsub.flush.max" - maximum items in the cache (-1 to disable cache)
           "xmpp.pubsub.flush.timer" - number of seconds between cache flushes
         
        Parameters:
        item - The published item to save.
      • flushPendingItems

        public static void flushPendingItems()
        Flush the cache(s) of items to be persisted (itemsToAdd) and deleted (itemsToDelete).
      • flushPendingItems

        public static void flushPendingItems​(boolean sendToCluster)
        Flush the cache(s) of items to be persisted (itemsToAdd) and deleted (itemsToDelete).
        Parameters:
        sendToCluster - If true, delegate to cluster members, otherwise local only
      • removePublishedItem

        public static void removePublishedItem​(PublishedItem item)
        Removes the specified published item from the DB.
        Parameters:
        item - The published item to delete.
      • loadDefaultConfiguration

        public static DefaultNodeConfiguration loadDefaultConfiguration​(PubSubService service,
                                                                        boolean isLeafType)
        Loads from the database the default node configuration for the specified node type and pubsub service.
        Parameters:
        service - the default node configuration used by this pubsub service.
        isLeafType - true if loading default configuration for leaf nodes.
        Returns:
        the loaded default node configuration for the specified node type and service or null if none was found.
      • createDefaultConfiguration

        public static void createDefaultConfiguration​(PubSubService service,
                                                      DefaultNodeConfiguration config)
        Creates a new default node configuration for the specified service.
        Parameters:
        service - the default node configuration used by this pubsub service.
        config - the default node configuration to create in the database.
      • updateDefaultConfiguration

        public static void updateDefaultConfiguration​(PubSubService service,
                                                      DefaultNodeConfiguration config)
        Updates the default node configuration for the specified service.
        Parameters:
        service - the default node configuration used by this pubsub service.
        config - the default node configuration to update in the database.
      • getPublishedItems

        public static List<PublishedItem> getPublishedItems​(LeafNode node)
        Fetches all the results for the specified node, limited by LeafNode.getMaxPublishedItems().
        Parameters:
        node - the leaf node to load its published items.
        Returns:
        the list of published items
      • getPublishedItems

        public static List<PublishedItem> getPublishedItems​(LeafNode node,
                                                            int maxRows)
        Fetches all the results for the specified node, limited by LeafNode.getMaxPublishedItems().
        Parameters:
        node - the leaf node to load its published items.
        maxRows - the maximum number of items to return
        Returns:
        the list of published items
      • getLastPublishedItem

        public static PublishedItem getLastPublishedItem​(LeafNode node)
        Fetches the last published item for the specified node.
        Parameters:
        node - the leaf node to load its last published items.
        Returns:
        the published item
      • purgeNode

        public static void purgeNode​(LeafNode leafNode)
      • shutdown

        public static void shutdown()