Class DefaultWatcherManager

java.lang.Object
com.atlassian.jira.issue.watchers.DefaultWatcherManager
All Implemented Interfaces:
WatcherManager

public class DefaultWatcherManager extends Object implements WatcherManager
  • Field Details

  • Constructor Details

  • Method Details

    • startWatching

      @Nonnull public Issue startWatching(@Nonnull ApplicationUser user, @Nonnull Issue issue)
      Description copied from interface: WatcherManager
      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.

      Specified by:
      startWatching in interface WatcherManager
      Parameters:
      user - user that starts watching the given issue
      issue - issue being watched
      Returns:
      updated issue
    • startWatching

      @Nonnull public Collection<Issue> startWatching(@Nonnull ApplicationUser user, @Nonnull Collection<Issue> issues, @Nonnull Context taskContext)
      Description copied from interface: WatcherManager
      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.

      Specified by:
      startWatching in interface WatcherManager
      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 public Issue stopWatching(@Nonnull ApplicationUser user, @Nonnull Issue issue)
      Description copied from interface: WatcherManager
      Disable watching of a particular issue for the user supplied.
      Specified by:
      stopWatching in interface WatcherManager
      Parameters:
      user - user that stops watching the given issue
      issue - issue being watched
    • stopWatching

      @Nonnull public Collection<Issue> stopWatching(@Nonnull ApplicationUser user, @Nonnull Collection<Issue> issues, @Nonnull Context taskContext)
      Description copied from interface: WatcherManager
      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.

      Specified by:
      stopWatching in interface WatcherManager
      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
    • getCurrentWatcherUsernames

      public List<String> getCurrentWatcherUsernames(@Nonnull Issue issue) throws DataAccessException
      Description copied from interface: WatcherManager
      Retrieve the list of usernames of users watching the given issue
      Specified by:
      getCurrentWatcherUsernames in interface WatcherManager
      Parameters:
      issue - issue being watched
      Returns:
      the list of usernames of users watching the given issue
      Throws:
      DataAccessException - if cannot retrieve watchers
    • isWatchingEnabled

      public boolean isWatchingEnabled()
      Specified by:
      isWatchingEnabled in interface WatcherManager
    • isWatching

      public boolean isWatching(@Nullable ApplicationUser user, @Nonnull Issue issue)
      Description copied from interface: WatcherManager
      Determine whether the current user is already watching the issue or not
      Specified by:
      isWatching in interface WatcherManager
      Parameters:
      user - user
      issue - issue being watched
      Returns:
      True if a user is watching the issue specified.
    • isWatching

      public boolean isWatching(ApplicationUser user, org.ofbiz.core.entity.GenericValue issue)
    • getWatchers

      public List<ApplicationUser> getWatchers(@Nonnull Issue issue, @Nonnull Locale userLocale)
      Description copied from interface: WatcherManager
      Retrieve list of users that are currently watching this issue (including the current user).
      Specified by:
      getWatchers in interface WatcherManager
      Parameters:
      issue - issue being watched
      userLocale - the locale of the user making this call, this is used for sorting the list values.
      Returns:
      list of users that are currently watching this issue (including the current user)
    • getWatchersUnsorted

      public Collection<ApplicationUser> getWatchersUnsorted(@Nonnull Issue issue)
      Description copied from interface: WatcherManager
      Retrieve list of users that are currently watching this issue (including the current user). No sorting is applied to this list.
      Specified by:
      getWatchersUnsorted in interface WatcherManager
      Parameters:
      issue - issue being watched
      Returns:
      list of users that are currently watching this issue (including the current user)
    • getWatcherCount

      public int getWatcherCount(@Nonnull Issue issue)
      Description copied from interface: WatcherManager
      Returns the number of users watching this issue.
      Specified by:
      getWatcherCount in interface WatcherManager
      Parameters:
      issue - issue being watched
      Returns:
      the number of users watching this issue.
    • getWatcherUserKeys

      public Collection<String> getWatcherUserKeys(@Nonnull Issue issue)
      Description copied from interface: WatcherManager
      Retrieve list of users that are currently watching this issue (including the current user).
      Specified by:
      getWatcherUserKeys in interface WatcherManager
      Parameters:
      issue - issue being watched
      Returns:
      list of users that are currently watching this issue (including the current user)
    • removeAllWatchesForUser

      public void removeAllWatchesForUser(@Nonnull ApplicationUser user)
      Description copied from interface: WatcherManager
      Remove all watches for a given user
      Specified by:
      removeAllWatchesForUser in interface WatcherManager
      Parameters:
      user - The user that has most probably been deleted
    • getWatchersCache

      protected com.google.common.cache.LoadingCache<Long,com.google.common.collect.ImmutableSet<String>> getWatchersCache()