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

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.
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.
protected  void checkModifyWatchersPermission(Issue issue, com.atlassian.crowd.embedded.api.User remoteUser, com.atlassian.crowd.embedded.api.User 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
<T> 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.
 
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

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

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 <T> 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,
                                             com.atlassian.crowd.embedded.api.User remoteUser,
                                             com.atlassian.crowd.embedded.api.User 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-2012 Atlassian. All Rights Reserved.