Class AbstractGroupProvider

java.lang.Object
org.jivesoftware.openfire.group.AbstractGroupProvider
All Implemented Interfaces:
GroupProvider
Direct Known Subclasses:
CrowdGroupProvider, DefaultGroupProvider, JDBCGroupProvider, LdapGroupProvider

public abstract class AbstractGroupProvider extends Object implements GroupProvider
Shared base class for Openfire GroupProvider implementations. By default, all mutator methods throw UnsupportedOperationException. In addition, group search operations are disabled. Subclasses may optionally implement these capabilities, and must also at minimum implement the GroupProvider.getGroup(String) method.
Author:
Tom Evans
  • Field Details

  • Constructor Details

    • AbstractGroupProvider

      public AbstractGroupProvider()
  • Method Details

    • addMember

      public void addMember(String groupName, org.xmpp.packet.JID user, boolean administrator) throws GroupNotFoundException
      Description copied from interface: GroupProvider
      Adds an entity to a group (optional operation). Implementations should use the bare JID representation of the JID passed as an argument to this method.
      Specified by:
      addMember in interface GroupProvider
      Parameters:
      groupName - the group to add the member to
      user - the (bare) JID of the entity to add
      administrator - True if the member is an administrator of the group
      Throws:
      UnsupportedOperationException - if the provider is read only
      GroupNotFoundException
    • updateMember

      public void updateMember(String groupName, org.xmpp.packet.JID user, boolean administrator) throws GroupNotFoundException
      Description copied from interface: GroupProvider
      Updates the privileges of an entity in a group. Implementations should use the bare JID representation of the JID passed as an argument to this method.
      Specified by:
      updateMember in interface GroupProvider
      Parameters:
      groupName - the group where the change happened
      user - the (bare) JID of the entity with new privileges
      administrator - True if the member is an administrator of the group
      Throws:
      UnsupportedOperationException - if the provider is read only
      GroupNotFoundException
    • deleteMember

      public void deleteMember(String groupName, org.xmpp.packet.JID user)
      Description copied from interface: GroupProvider
      Deletes an entity from a group (optional operation). Implementations should use the bare JID representation of the JID passed as an argument to this method.
      Specified by:
      deleteMember in interface GroupProvider
      Parameters:
      groupName - the group name.
      user - the (bare) JID of the entity to delete.
      Throws:
      UnsupportedOperationException - if the provider is read only
    • isReadOnly

      public boolean isReadOnly()
      Always true for a read-only provider
      Specified by:
      isReadOnly in interface GroupProvider
      Returns:
      true if the user provider is read-only.
    • createGroup

      Description copied from interface: GroupProvider
      Creates a group with the given name (optional operation).

      The provider is responsible for setting the creation date and modification date to the current date/time.

      Specified by:
      createGroup in interface GroupProvider
      Parameters:
      name - name of the group.
      Returns:
      the newly created group.
      Throws:
      UnsupportedOperationException - if the provider is read only
      GroupAlreadyExistsException - if a group with the same name already exists.
      GroupNameInvalidException
    • deleteGroup

      public void deleteGroup(String name) throws GroupNotFoundException
      Description copied from interface: GroupProvider
      Deletes the group (optional operation).
      Specified by:
      deleteGroup in interface GroupProvider
      Parameters:
      name - the name of the group to delete.
      Throws:
      UnsupportedOperationException - if the provider is read only
      GroupNotFoundException
    • setName

      Description copied from interface: GroupProvider
      Sets the name of a group to a new name.
      Specified by:
      setName in interface GroupProvider
      Parameters:
      oldName - the current name of the group.
      newName - the desired new name of the group.
      Throws:
      GroupAlreadyExistsException - if the group already exists
      UnsupportedOperationException - if the provider is read only
      GroupNameInvalidException
      GroupNotFoundException
    • setDescription

      public void setDescription(String name, String description) throws GroupNotFoundException
      Description copied from interface: GroupProvider
      Updates the group's description.
      Specified by:
      setDescription in interface GroupProvider
      Parameters:
      name - the group name.
      description - the group description.
      Throws:
      GroupNotFoundException - if the group could not be found
      UnsupportedOperationException - if the provider is read only
    • isSearchSupported

      public boolean isSearchSupported()
      Returns true if the provider supports group search capability. This implementation always returns false.
      Specified by:
      isSearchSupported in interface GroupProvider
      Returns:
      true if searching is supported.
    • search

      public Collection<String> search(String query)
      Returns a collection of group search results. This implementation returns an empty collection.
      Specified by:
      search in interface GroupProvider
      Parameters:
      query - the search string for group names.
      Returns:
      all groups that match the search.
    • search

      public Collection<String> search(String query, int startIndex, int numResults)
      Returns a collection of group search results. This implementation returns an empty collection.
      Specified by:
      search in interface GroupProvider
      Parameters:
      query - the search string for group names.
      startIndex - start index in results.
      numResults - number of results to return.
      Returns:
      all groups that match the search.
    • getSharedGroupNames

      public Collection<String> getSharedGroupNames()
      Returns the name of the groups that are shared groups.
      Specified by:
      getSharedGroupNames in interface GroupProvider
      Returns:
      the name of the groups that are shared groups.
    • hasSharedGroups

      public boolean hasSharedGroups()
      Checks if any shared groups exists. No distinction is made between the type of shared group: any group that is shared (with anything other than 'nobody') qualifies.
      Returns:
      true if at least one shared group exists, otherwise false.
    • getSharedGroupNames

      public Collection<String> getSharedGroupNames(org.xmpp.packet.JID user)
      Description copied from interface: GroupProvider
      Returns an unmodifiable Collection of all shared groups in the system for a given user. Implementations should use the bare JID representation of the JID passed as an argument to this method.
      Specified by:
      getSharedGroupNames in interface GroupProvider
      Parameters:
      user - The bare JID for the user (node@domain)
      Returns:
      unmodifiable Collection of all shared groups in the system for a given user.
    • getVisibleGroupNames

      public Collection<String> getVisibleGroupNames(String userGroup)
      Description copied from interface: GroupProvider
      Returns an unmodifiable Collection of groups that are visible to the members of the given group.
      Specified by:
      getVisibleGroupNames in interface GroupProvider
      Parameters:
      userGroup - The given group
      Returns:
      unmodifiable Collection of group names that are visible to the given group.
    • search

      public Collection<String> search(String key, String value)
      Description copied from interface: GroupProvider
      Returns the names of groups that have a property matching the given key/value pair. This provides a simple extensible search mechanism for providers with differing property sets and storage models. The semantics of the key/value matching (wildcard support, scoping, etc.) are unspecified by the interface and may vary for each implementation. Before searching or showing a search UI, use the GroupProvider.isSearchSupported() method to ensure that searching is supported.
      Specified by:
      search in interface GroupProvider
      Parameters:
      key - The name of a group property (e.g. "sharedRoster.showInRoster")
      value - The value to match for the given property
      Returns:
      unmodifiable Collection of group names that match the given key/value pair.
    • getPublicSharedGroupNames

      public Collection<String> getPublicSharedGroupNames()
      Description copied from interface: GroupProvider
      Returns an unmodifiable Collection of all public shared groups in the system.
      Specified by:
      getPublicSharedGroupNames in interface GroupProvider
      Returns:
      unmodifiable Collection of all public shared groups in the system.
    • isSharingSupported

      public boolean isSharingSupported()
      Description copied from interface: GroupProvider
      Returns true if this GroupProvider allows group sharing. Shared groups enable roster sharing.
      Specified by:
      isSharingSupported in interface GroupProvider
      Returns:
      true if the group provider supports group sharing.
    • loadProperties

      public PersistableMap<String,String> loadProperties(Group group)
      Returns a custom Map that updates the database whenever a property value is added, changed, or deleted.
      Specified by:
      loadProperties in interface GroupProvider
      Parameters:
      group - The target group
      Returns:
      The properties for the given group