Class RosterManager

java.lang.Object
org.jivesoftware.openfire.container.BasicModule
org.jivesoftware.openfire.roster.RosterManager
All Implemented Interfaces:
Module, GroupEventListener, UserEventListener

public class RosterManager extends BasicModule implements GroupEventListener, UserEventListener
A simple service that allows components to retrieve a roster based solely on the ID of the owner. Users have convenience methods for obtaining a roster associated with the owner. However there are many components that need to retrieve the roster based solely on the generic ID owner key. This interface defines a service that can do that. This allows classes that generically manage resource for resource owners (such as presence updates) to generically offer their services without knowing or caring if the roster owner is a user, chatbot, etc.
Author:
Iain Shigeoka
  • Field Details

    • EXECUTOR_CORE_POOL_SIZE

      public static final SystemProperty<Integer> EXECUTOR_CORE_POOL_SIZE
      The number of threads to keep in the thread pool that is used to invoke roster event listeners, even if they are idle.
    • EXECUTOR_MAX_POOL_SIZE

      public static final SystemProperty<Integer> EXECUTOR_MAX_POOL_SIZE
      The maximum number of threads to allow in the thread pool that is used to invoke roster event listeners.
    • EXECUTOR_POOL_KEEP_ALIVE

      public static final SystemProperty<Duration> EXECUTOR_POOL_KEEP_ALIVE
      The number of threads in the thread pool that is used to invoke roster event listeners is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.
  • Constructor Details

    • RosterManager

      public RosterManager()
  • Method Details

    • isRosterServiceEnabled

      public static boolean isRosterServiceEnabled()
      Returns true if the roster service is enabled. When disabled it is not possible to retrieve users rosters or broadcast presence packets to roster contacts.
      Returns:
      true if the roster service is enabled.
    • isRosterVersioningEnabled

      public static boolean isRosterVersioningEnabled()
      Returns true if the roster versioning is enabled.
      Returns:
      true if the roster versioning is enabled.
    • getRoster

      public Roster getRoster(String username) throws UserNotFoundException
      Returns the roster for the given username.
      Parameters:
      username - the username to search for.
      Returns:
      the roster associated with the ID.
      Throws:
      UserNotFoundException - if the ID does not correspond to a known entity on the server.
    • deleteRoster

      public void deleteRoster(org.xmpp.packet.JID user)
      Removes the entire roster of a given user. This is necessary when a user account is being deleted from the server.
      Parameters:
      user - the user.
    • getSharedGroups

      public Collection<Group> getSharedGroups(String username)
      Returns a collection with all the groups that the user may include in his roster. The following criteria will be used to select the groups: 1) Groups that are configured so that everybody can include in his roster, 2) Groups that are configured so that its users may include the group in their rosters and the user is a group user of the group and 3) User belongs to a Group that may see a Group that whose members may include the Group in their rosters.
      Parameters:
      username - the username of the user to return his shared groups.
      Returns:
      a collection with all the groups that the user may include in his roster.
    • getPublicSharedGroups

      public Collection<Group> getPublicSharedGroups()
      Returns the list of shared groups whose visibility is public.
      Returns:
      the list of shared groups whose visibility is public.
    • groupCreated

      public void groupCreated(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      A group was created.
      Specified by:
      groupCreated in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • groupDeleting

      public void groupDeleting(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      A group is being deleted.
      Specified by:
      groupDeleting in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • groupModified

      public void groupModified(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      A group's name, description, or an extended property was changed.
      Specified by:
      groupModified in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • initialize

      public void initialize(XMPPServer server)
      Description copied from class: BasicModule

      Initializes the basic module.

      Inheriting classes that choose to override this method MUST call this initialize() method before accessing BasicModule resources.

      Specified by:
      initialize in interface Module
      Overrides:
      initialize in class BasicModule
      Parameters:
      server - the server hosting this module.
    • isSharedGroup

      public static boolean isSharedGroup(Group group)
      Returns true if the specified Group may be included in a user roster. The decision is made based on the group properties that are configurable through the Admin Console.
      Parameters:
      group - the group to check if it may be considered a shared group.
      Returns:
      true if the specified Group may be included in a user roster.
    • isPublicSharedGroup

      public static boolean isPublicSharedGroup(Group group)
      Returns true if the specified Group may be seen by all users in the system. The decision is made based on the group properties that are configurable through the Admin Console.
      Parameters:
      group - the group to check if it may be seen by all users in the system.
      Returns:
      true if the specified Group may be seen by all users in the system.
    • memberAdded

      public void memberAdded(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      A member was added to a group.
      Specified by:
      memberAdded in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • memberRemoved

      public void memberRemoved(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      A member was removed from a group.
      Specified by:
      memberRemoved in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • adminAdded

      public void adminAdded(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      An administrator was added to a group.
      Specified by:
      adminAdded in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • adminRemoved

      public void adminRemoved(Group group, Map<String,?> params)
      Description copied from interface: GroupEventListener
      An administrator was removed from a group.
      Specified by:
      adminRemoved in interface GroupEventListener
      Parameters:
      group - the group.
      params - event parameters.
    • userCreated

      public void userCreated(User newUser, Map<String,Object> params)
      A new user has been created so members of public shared groups need to have their rosters updated. Members of public shared groups need to have a roster item with subscription FROM for the new user since the new user can see them.
      Specified by:
      userCreated in interface UserEventListener
      Parameters:
      newUser - the newly created user.
      params - event parameters.
    • userDeleting

      public void userDeleting(User user, Map<String,Object> params)
      Description copied from interface: UserEventListener
      A user is being deleted.
      Specified by:
      userDeleting in interface UserEventListener
      Parameters:
      user - the user.
      params - event parameters.
    • userModified

      public void userModified(User user, Map<String,Object> params)
      Description copied from interface: UserEventListener
      A user's name, email, or an extended property was changed.
      Specified by:
      userModified in interface UserEventListener
      Parameters:
      user - the user.
      params - event parameters.
    • isGroupVisible

      public boolean isGroupVisible(Group group, org.xmpp.packet.JID user)
      Returns true if a given group is visible to a given user. That means, if the user can see the group in his roster.
      Parameters:
      group - the group to check if the user can see.
      user - the JID of the user to check if he may see the group.
      Returns:
      true if a given group is visible to a given user.
    • start

      public void start() throws IllegalStateException
      Description copied from class: BasicModule

      Starts the basic module.

      Inheriting classes that choose to override this method MUST call this start() method before accessing BasicModule resources.

      Specified by:
      start in interface Module
      Overrides:
      start in class BasicModule
      Throws:
      IllegalStateException - If start is called before initialize successfully returns
    • stop

      public void stop()
      Description copied from class: BasicModule

      Stops the basic module.

      Inheriting classes that choose to override this method MUST call this stop() method before accessing BasicModule resources.

      Specified by:
      stop in interface Module
      Overrides:
      stop in class BasicModule
    • getRosterItemProvider

      public static RosterItemProvider getRosterItemProvider()