Interface WatcherManager

All Known Implementing Classes:
DefaultWatcherManager

@PublicApi @ParametersAreNonnullByDefault public interface WatcherManager
Allows watching of issues. I.e.: Users watching an issue will receive notifications for every update of the issue.
  • Method Details

    • isWatchingEnabled

      boolean isWatchingEnabled()
    • isWatching

      boolean isWatching(@Nullable ApplicationUser user, Issue issue)
      Determine whether the current user is already watching the issue or not
      Parameters:
      user - user
      issue - issue being watched
      Returns:
      True if a user is watching the issue specified.
    • getWatchers

      @Nonnull List<ApplicationUser> getWatchers(Issue issue, Locale userLocale)
      Retrieve list of users that are currently watching this issue (including the current user).
      Parameters:
      userLocale - the locale of the user making this call, this is used for sorting the list values.
      issue - issue being watched
      Returns:
      list of users that are currently watching this issue (including the current user)
      Since:
      v6.0
    • getWatchersUnsorted

      @Nonnull Collection<ApplicationUser> getWatchersUnsorted(Issue issue)
      Retrieve list of users that are currently watching this issue (including the current user). No sorting is applied to this list.
      Parameters:
      issue - issue being watched
      Returns:
      list of users that are currently watching this issue (including the current user)
      Since:
      v7.2
    • getWatcherCount

      int getWatcherCount(Issue issue)
      Returns the number of users watching this issue.
      Parameters:
      issue - issue being watched
      Returns:
      the number of users watching this issue.
      Since:
      v6.0
    • getWatcherUserKeys

      Collection<String> getWatcherUserKeys(Issue issue)
      Retrieve list of users that are currently watching this issue (including the current user).
      Parameters:
      issue - issue being watched
      Returns:
      list of users that are currently watching this issue (including the current user)
      Since:
      v6.0
    • getCurrentWatcherUsernames

      List<String> getCurrentWatcherUsernames(Issue issue) throws DataAccessException
      Retrieve the list of usernames of users watching the given issue
      Parameters:
      issue - issue being watched
      Returns:
      the list of usernames of users watching the given issue
      Throws:
      DataAccessException - if cannot retrieve watchers
    • startWatching

      @Nonnull Issue startWatching(ApplicationUser user, Issue issue)
      Enable watching of a particular issue for the user supplied.

      This means the user will receive updates for any modifications to the issue. Note, that this will not check if a user has the BROWSE_ISSUE permission. Notifications will however only be sent to users who have the appropriate permissions. Adding a permission check here would complicate updating permission schemes a lot, as it would have to update issue's watchers lists.

      Parameters:
      user - user that starts watching the given issue
      issue - issue being watched
      Returns:
      updated issue
    • startWatching

      @Nonnull Collection<Issue> startWatching(ApplicationUser user, Collection<Issue> issues, Context taskContext)
      Enable watching of a list of issues for the user supplied.

      This means the user will receive updates for any modifications to the issues. Note, that this will not check if a user has the BROWSE_ISSUE permission. Notifications will however only be sent to users who have the appropriate permissions. Adding a permission check here would complicate updating permission schemes a lot, as it would have to update issues' watchers lists.

      This bulk method is more performant than calling the single version multiple times, as it indexes the issues in bulk rather than one at a time.

      Parameters:
      user - user that starts watching the given issues
      issues - the list of issues to watch
      taskContext - a context through which progress can be reported back
      Returns:
      the same list of issues (the same order) updated or not
    • stopWatching

      @Nonnull Issue stopWatching(ApplicationUser user, Issue issue)
      Disable watching of a particular issue for the user supplied.
      Parameters:
      user - user that stops watching the given issue
      issue - issue being watched
    • stopWatching

      @Nonnull Collection<Issue> stopWatching(ApplicationUser user, Collection<Issue> issues, Context taskContext)
      Disable watching of a list of issues for the user supplied.

      This bulk method is more performant than calling the single version multiple times, as it indexes the issues in bulk rather than one at a time.

      Parameters:
      user - user that stops watching the given issues
      issues - list of issues being watched
      taskContext - a context through which progress can be reported back
    • removeAllWatchesForUser

      void removeAllWatchesForUser(ApplicationUser user)
      Remove all watches for a given user
      Parameters:
      user - The user that has most probably been deleted
      Since:
      v6.0