Interface PubSubPersistenceProvider

All Known Implementing Classes:
CachingPubsubPersistenceProvider, DefaultPubSubPersistenceProvider, InMemoryPubSubPersistenceProvider

public interface PubSubPersistenceProvider
Defines an implementation responsible for persisting pubsub-related data to a backend data store.
Author:
Guus der Kinderen, guus.der.kinderen@gmail.com
  • Method Details

    • initialize

      void initialize()
      Starts the provider. This method is invoked before the provider is used to interact with the backend datastore.
    • shutdown

      void shutdown()
      Stops the provider. This method is invoked when the system is to be shut down. The provider should not be used after this method is invoked.
    • createNode

      void createNode(Node node)
      Schedules the node to be created in the database.
      Parameters:
      node - The newly created node.
    • updateNode

      void updateNode(Node node)
      Schedules the node to be updated in the database.
      Parameters:
      node - The updated node.
    • removeNode

      void removeNode(Node node)
      Schedules the node to be removed in the database.
      Parameters:
      node - The node that is being deleted.
    • loadNodes

      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

      void loadNode(PubSubService service, Node.UniqueIdentifier nodeIdentifier)
      Loads all nodes from the database and adds them to the PubSub service.
      Parameters:
      service - the pubsub service that is hosting the nodes.
      nodeIdentifier - the identifier of the node to load.
    • loadSubscription

      void loadSubscription(Node node, String subId)
      Loads a subscription from the database, storing it in the provided node.
      Parameters:
      node - The node for which a subscription is to be loaded from the database.
      subId - The identifier of the subscription that is to be loaded from the database.
    • findDirectlySubscribedNodes

      @Nonnull Set<Node.UniqueIdentifier> findDirectlySubscribedNodes(@Nonnull org.xmpp.packet.JID address)
      Returns identifiers for all pubsub nodes to which the provided address is a direct subscriber. Note that the results do not include nodes to which the provided address is a subscriber through inheritance! The result can include root nodes, (other) collection nodes as well as leaf nodes. When a node is subscribed to using a full JID, that node will be returned only if the address used as an argument in this method matches that full JID. If the node was subscribed to using a bare JID, it will be returned when the provided argument's bare JID representation matches the JID used for the subscription.
      Parameters:
      address - The address (bare of full JID) for which to return nodes.
      Returns:
      A collection of node identifiers, possibly empty.
    • createAffiliation

      void createAffiliation(Node node, NodeAffiliate affiliate)
      Creates a 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.
    • updateAffiliation

      void updateAffiliation(Node node, NodeAffiliate affiliate)
      Updates an 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.
    • removeAffiliation

      void removeAffiliation(Node node, NodeAffiliate affiliate)
      Removes the affiliation and subscription 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.
    • createSubscription

      void createSubscription(Node node, NodeSubscription subscription)
      Adds the new subscription of the user to the node to the database.
      Parameters:
      node - The node where the user has subscribed to.
      subscription - The new subscription of the user to the node.
    • updateSubscription

      void updateSubscription(Node node, NodeSubscription subscription)
      Updates the subscription of the user to the node to the database.
      Parameters:
      node - The node where the user has subscribed to.
      subscription - The new subscription of the user to the node.
    • removeSubscription

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

      void savePublishedItem(PublishedItem item)
      Creates and stores the published item in the database. When an item with the same ID was previously saved, this item will be replaced by the new item.
      Parameters:
      item - The published item to save.
    • removePublishedItem

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

      DefaultNodeConfiguration loadDefaultConfiguration(PubSubService.UniqueIdentifier serviceIdentifier, boolean isLeafType)
      Loads from the database the default node configuration for the specified node type and pubsub service.
      Parameters:
      serviceIdentifier - Identifier of the 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

      void createDefaultConfiguration(PubSubService.UniqueIdentifier serviceIdentifier, DefaultNodeConfiguration config)
      Creates a new default node configuration for the specified service.
      Parameters:
      serviceIdentifier - Identifier of the service
      config - the default node configuration to create in the database.
    • updateDefaultConfiguration

      void updateDefaultConfiguration(PubSubService.UniqueIdentifier serviceIdentifier, DefaultNodeConfiguration config)
      Updates the default node configuration for the specified service.
      Parameters:
      serviceIdentifier - Identifier of the service
      config - the default node configuration to update in the database.
    • getPublishedItems

      List<PublishedItem> getPublishedItems(LeafNode node)
      Fetches all the results for the specified node, limited by LeafNode.getMaxPublishedItems(). Results are ordered by creation date.
      Parameters:
      node - the leaf node to load its published items.
    • getPublishedItems

      List<PublishedItem> getPublishedItems(LeafNode node, int maxRows)
      Fetches all the results for the specified node, limited by LeafNode.getMaxPublishedItems(). Results are ordered by creation date.
      Parameters:
      node - the leaf node to load its published items.
    • getLastPublishedItem

      default PublishedItem getLastPublishedItem(LeafNode node)
      Fetches the last published item (by creation date) for the specified node.
      Parameters:
      node - the leaf node to load its last published items.
    • getPublishedItem

      PublishedItem getPublishedItem(LeafNode node, PublishedItem.UniqueIdentifier itemIdentifier)
      Fetches a published item (by ID) for a node.
      Parameters:
      node - The node for which to get a published item.
      itemIdentifier - The unique identifier of the item to fetch.
      Returns:
      The item, or null if no item was found.
    • purgeNode

      void purgeNode(LeafNode leafNode)
      Deletes all published items of a node.
      Parameters:
      leafNode - the node for which to delete all published items.
    • loadPEPServiceFromDB

      PEPService loadPEPServiceFromDB(org.xmpp.packet.JID jid)
      Loads a PEP service from the database, if it exists. Note that the returned service is not yet initialized!
      Parameters:
      jid - the JID of the owner of the PEP service.
      Returns:
      the loaded PEP service, or null if not found.
    • bulkPublishedItems

      void bulkPublishedItems(List<PublishedItem> addList, List<PublishedItem> delList)
      Writes large changesets, using batches and transactions when available. The 'delete' list takes precedence over the 'add' list: when an item exists on both lists, it is removed (and not re-added) from storage To prevent duplicates to exist, this method will attempt to remove all items to-be-added, before re-adding them.
      Parameters:
      addList - A list of items to be added.
      delList - A list of items to be removed.