com.atlassian.jira.bc.issue.watcher
Class DefaultWatcherService

java.lang.Object
  extended by com.atlassian.jira.bc.issue.watcher.DefaultWatcherService
All Implemented Interfaces:
WatcherService

public class DefaultWatcherService
extends Object
implements WatcherService

Implementation of WatcherService.

Since:
v4.2

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.atlassian.jira.bc.issue.watcher.WatcherService
WatcherService.BulkWatchResult
 
Constructor Summary
DefaultWatcherService(ApplicationProperties applicationProperties, I18nHelper.BeanFactory i18n, PermissionManager permissionManager, WatcherManager watcherManager, UserManager userManager)
          Creates a new DefaultWatcherService with the given dependencies.
 
Method Summary
 ServiceOutcome<List<com.atlassian.crowd.embedded.api.User>> addWatcher(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser, com.atlassian.crowd.embedded.api.User watcher)
          Adds a watcher to an issue's list of watchers, returning the updated list of watchers.
 WatcherService.BulkWatchResult addWatcherToAll(Collection<Issue> issues, ApplicationUser remoteUser, ApplicationUser watcher)
          Adds a watcher to all of the supplied issues.
protected  boolean canEditWatcherList(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser)
          Returns true iff the given User has permission to edit the watcher list of the issue.
 boolean canUnwatchAll(Iterable<Issue> issues, ApplicationUser remoteUser)
          Whether the specified user can unwatch all the specified issues.
 boolean canUnwatchAll(Iterable<Issue> issues, com.atlassian.crowd.embedded.api.User remoteUser)
          Deprecated. 
 boolean canWatchAll(Iterable<Issue> issues, ApplicationUser applicationUser)
          Whether the specified user can watch all the specified issues.
 boolean canWatchAll(Iterable<Issue> issues, com.atlassian.crowd.embedded.api.User remoteUser)
          Deprecated. 
protected  void checkModifyWatchersPermission(Issue issue, ApplicationUser remoteUser, ApplicationUser watcher)
          Ensures that the given remoteUser has permission to add or remove the given watcher to/from the issue.
protected
<T extends com.atlassian.crowd.embedded.api.User>
Pair<Integer,List<T>>
convertUsers(Pair<Integer,List<String>> watchers, com.google.common.base.Function<String,T> function)
          Converts the usernames into User objects using the given function.
protected  List<com.atlassian.crowd.embedded.api.User> getCurrentWatchersFor(Issue issue)
          Returns a List containing the users that are currently watching an issue.
 ServiceOutcome<Pair<Integer,List<com.atlassian.crowd.embedded.api.User>>> getWatchers(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser)
          Returns a the total number of watchers for a given issue in the first element of the returned Pair, and the list of visible watchers in the second element of the Pair.
protected  Pair<Integer,List<String>> getWatcherUsernames(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser)
          Returns a pair containing the watcher count and the watcher usernames for a given issue.
 boolean hasViewWatcherListPermission(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser)
          Returns true iff the given User has permission to view the watcher list of the issue.
 boolean isWatchingEnabled()
          Returns true iff watching is enabled.
 ServiceOutcome<List<com.atlassian.crowd.embedded.api.User>> removeWatcher(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser, com.atlassian.crowd.embedded.api.User watcher)
          Removes a watcher from an issue's list of watchers, returning the updated list of watchers.
 WatcherService.BulkWatchResult removeWatcherFromAll(Collection<Issue> issues, ApplicationUser remoteUser, ApplicationUser watcher)
          Removes a watcher from all of the supplied issues.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultWatcherService

public DefaultWatcherService(ApplicationProperties applicationProperties,
                             I18nHelper.BeanFactory i18n,
                             PermissionManager permissionManager,
                             WatcherManager watcherManager,
                             UserManager userManager)
Creates a new DefaultWatcherService with the given dependencies.

Parameters:
applicationProperties - an ApplicationProperties
i18n - a I18nBean
permissionManager - a PermissionManager
watcherManager - a WatcherManager
userManager - a UserManager
Method Detail

getWatchers

public ServiceOutcome<Pair<Integer,List<com.atlassian.crowd.embedded.api.User>>> getWatchers(Issue issue,
                                                                                             @Nullable
                                                                                             com.atlassian.crowd.embedded.api.User remoteUser)
                                                                                      throws WatchingDisabledException
Description copied from interface: WatcherService
Returns a the total number of watchers for a given issue in the first element of the returned Pair, and the list of visible watchers in the second element of the Pair. Note that if the remote user does not have permission to view the list of watchers, it is possible for the number of elements in the returned user list to be less than the returned number of watchers.

Specified by:
getWatchers in interface WatcherService
Parameters:
issue - the Issue to find watchers for
remoteUser - the calling User
Returns:
a ServiceOutcome containing the total number of watchers, and a list of visible watchers
Throws:
WatchingDisabledException - if watching is currently disabled

addWatcher

public ServiceOutcome<List<com.atlassian.crowd.embedded.api.User>> addWatcher(Issue issue,
                                                                              com.atlassian.crowd.embedded.api.User remoteUser,
                                                                              com.atlassian.crowd.embedded.api.User watcher)
                                                                       throws WatchingDisabledException
Description copied from interface: WatcherService
Adds a watcher to an issue's list of watchers, returning the updated list of watchers.

Specified by:
addWatcher in interface WatcherService
Parameters:
issue - the issue to update
remoteUser - the remote user on behalf of which
watcher - the watcher to add
Returns:
a ServiceOutcome containing a list of User
Throws:
WatchingDisabledException - if watching is currently disabled

addWatcherToAll

public WatcherService.BulkWatchResult addWatcherToAll(Collection<Issue> issues,
                                                      ApplicationUser remoteUser,
                                                      ApplicationUser watcher)
                                               throws WatchingDisabledException
Description copied from interface: WatcherService
Adds a watcher to all of the supplied issues.

If there is partial success, the issues which we can modify will be modified and the ones we cannot will be returned in a BulkWatchResult.

Specified by:
addWatcherToAll in interface WatcherService
Parameters:
issues - the list of issues to update
remoteUser - the remote user on behalf of which
watcher - the watcher to add
Returns:
a BulkWatchResult containing the issues that could not be modified
Throws:
WatchingDisabledException - if watching is currently disabled

removeWatcher

public ServiceOutcome<List<com.atlassian.crowd.embedded.api.User>> removeWatcher(Issue issue,
                                                                                 com.atlassian.crowd.embedded.api.User remoteUser,
                                                                                 com.atlassian.crowd.embedded.api.User watcher)
                                                                          throws WatchingDisabledException
Description copied from interface: WatcherService
Removes a watcher from an issue's list of watchers, returning the updated list of watchers.

Specified by:
removeWatcher in interface WatcherService
Parameters:
issue - the Issue to update
remoteUser - a User indicating the user on behalf of whom this operation is being performed
watcher - a User representing the User to remove from the watcher list
Returns:
a ServiceOutcome containing a list of User
Throws:
WatchingDisabledException - if watching is currently disabled

removeWatcherFromAll

public WatcherService.BulkWatchResult removeWatcherFromAll(Collection<Issue> issues,
                                                           ApplicationUser remoteUser,
                                                           ApplicationUser watcher)
                                                    throws WatchingDisabledException
Description copied from interface: WatcherService
Removes a watcher from all of the supplied issues.

If there is partial success, the issues which we can modify will be modified and the ones we cannot will be returned in a BulkWatchResult.

Specified by:
removeWatcherFromAll in interface WatcherService
Parameters:
issues - the list of Issues to update
remoteUser - an ApplicationUser indicating the user on behalf of whom this operation is being performed
watcher - an ApplicationUser representing the user to remove from the watcher list for each issue
Returns:
a BulkWatchResult containing the issues that could not be modified
Throws:
WatchingDisabledException - if watching is currently disabled

canWatchAll

@Deprecated
public boolean canWatchAll(Iterable<Issue> issues,
                                      com.atlassian.crowd.embedded.api.User remoteUser)
Deprecated. 

Description copied from interface: WatcherService
Whether the specified user can watch all the specified issues.

Specified by:
canWatchAll in interface WatcherService
Parameters:
issues - The list of issues to check
remoteUser - The user to execute this check for
Returns:
true; if the specified user can watch all the specified issues; otherwise, false is returned.

canWatchAll

public boolean canWatchAll(Iterable<Issue> issues,
                           ApplicationUser applicationUser)
Description copied from interface: WatcherService
Whether the specified user can watch all the specified issues.

Specified by:
canWatchAll in interface WatcherService
Parameters:
issues - The list of issues to check
applicationUser - The user to execute this check for
Returns:
true; if the specified user can watch all the specified issues; otherwise, false is returned.

canUnwatchAll

@Deprecated
public boolean canUnwatchAll(Iterable<Issue> issues,
                                        com.atlassian.crowd.embedded.api.User remoteUser)
Deprecated. 

Description copied from interface: WatcherService
Whether the specified user can unwatch all the specified issues.

Specified by:
canUnwatchAll in interface WatcherService
Parameters:
issues - The list of issues to check
remoteUser - The user to execute this check for
Returns:
true; if the specified user can unwatch all the specified issues; otherwise, false is returned.

canUnwatchAll

public boolean canUnwatchAll(Iterable<Issue> issues,
                             ApplicationUser remoteUser)
Description copied from interface: WatcherService
Whether the specified user can unwatch all the specified issues.

Specified by:
canUnwatchAll in interface WatcherService
Parameters:
issues - The list of issues to check
remoteUser - The user to execute this check for
Returns:
true; if the specified user can unwatch all the specified issues; otherwise, false is returned.

isWatchingEnabled

public boolean isWatchingEnabled()
Returns true iff watching is enabled.

Specified by:
isWatchingEnabled in interface WatcherService
Returns:
true iff watching is enabled

hasViewWatcherListPermission

public boolean hasViewWatcherListPermission(Issue issue,
                                            @Nullable
                                            com.atlassian.crowd.embedded.api.User remoteUser)
Returns true iff the given User has permission to view the watcher list of the issue.

Specified by:
hasViewWatcherListPermission in interface WatcherService
Parameters:
issue - an Issue
remoteUser - a User
Returns:
a boolean indicating whether the user can view the watch list

getWatcherUsernames

protected Pair<Integer,List<String>> getWatcherUsernames(Issue issue,
                                                         com.atlassian.crowd.embedded.api.User remoteUser)
                                                  throws WatchingDisabledException
Returns a pair containing the watcher count and the watcher usernames for a given issue.

Parameters:
issue - the Issue
remoteUser - the calling User
Returns:
a Pair containing the watcher count and the watcher usernames for a given issue
Throws:
WatchingDisabledException - if watching is disabled

getCurrentWatchersFor

protected List<com.atlassian.crowd.embedded.api.User> getCurrentWatchersFor(Issue issue)
Returns a List containing the users that are currently watching an issue.

Parameters:
issue - the Issue to get the watcher list for
Returns:
a List of users that are watching the issue

canEditWatcherList

protected boolean canEditWatcherList(Issue issue,
                                     @Nullable
                                     com.atlassian.crowd.embedded.api.User remoteUser)
Returns true iff the given User has permission to edit the watcher list of the issue.

Parameters:
issue - an Issue
remoteUser - a User
Returns:
a boolean indicating whether the user can edit the watch list

convertUsers

protected <T extends com.atlassian.crowd.embedded.api.User> Pair<Integer,List<T>> convertUsers(Pair<Integer,List<String>> watchers,
                                                                                               com.google.common.base.Function<String,T> function)
Converts the usernames into User objects using the given function.

Parameters:
watchers - a Pair of watcher count and watcher usernames
function - a Function used for conversion
Returns:
a Pair of watcher count and User object

checkModifyWatchersPermission

protected void checkModifyWatchersPermission(Issue issue,
                                             ApplicationUser remoteUser,
                                             ApplicationUser watcher)
                                      throws com.atlassian.jira.bc.issue.watcher.DefaultWatcherService.PermissionException,
                                             WatchingDisabledException
Ensures that the given remoteUser has permission to add or remove the given watcher to/from the issue. Throws an exception if the user does not have permission.

Parameters:
issue - an Issue
remoteUser - a User representing the caller
watcher - a User representing the watcher to add or remove
Throws:
PermissionException - if the caller does not have permission to manage watchers, or cannot see the issue
WatchingDisabledException - if watching is disabled
com.atlassian.jira.bc.issue.watcher.DefaultWatcherService.PermissionException


Copyright © 2002-2014 Atlassian. All Rights Reserved.