com.atlassian.jira.avatar
Class AvatarServiceImpl

java.lang.Object
  extended by com.atlassian.jira.avatar.AvatarServiceImpl
All Implemented Interfaces:
AvatarService

public class AvatarServiceImpl
extends Object
implements AvatarService

Implementation of the AvatarService. Uses AvatarPlugin module for user Avatars.

Since:
v4.3

Constructor Summary
AvatarServiceImpl(UserManager userManager, AvatarManager avatarManager, UserPropertyManager userPropertyManager, VelocityRequestContextFactory velocityRequestContextFactory, ApplicationProperties applicationProperties, GravatarSettings gravatarSettings, com.atlassian.plugin.PluginAccessor pluginAccessor)
          Injectable constructor.
 
Method Summary
 boolean canSetCustomUserAvatar(ApplicationUser remoteUser, ApplicationUser user)
          Returns a boolean indicating whether the calling user can edit the custom user avatar for the user with the given username.
 boolean canSetCustomUserAvatar(com.atlassian.crowd.embedded.api.User remoteUser, String username)
          Returns a boolean indicating whether the calling user can edit the custom user avatar for the user with the given username.
protected  boolean canViewAvatar(ApplicationUser user, Avatar avatar)
          Returns true if the passed in user has permission to view the passed in avatar.
protected  Long configuredAvatarIdFor(ApplicationUser user)
          Returns the avatar id that is configured for the given User.
protected static ApplicationUser fromStaleUser(com.atlassian.crowd.embedded.api.User user)
           
protected  Avatar getAnonymousAvatar()
          Returns the anonymous avatar, if configured.
 Avatar getAvatar(ApplicationUser remoteUser, ApplicationUser avatarUser)
          Returns the Avatar for the given user, if configured.
 Avatar getAvatar(com.atlassian.crowd.embedded.api.User remoteUser, String username)
          Returns the Avatar for the given user, if configured.
 URI getAvatarAbsoluteURL(ApplicationUser remoteUser, ApplicationUser avatarUser, Avatar.Size size)
          This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but returns an absolute URL.
 URI getAvatarAbsoluteURL(com.atlassian.crowd.embedded.api.User remoteUser, String username, Avatar.Size size)
          This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but returns an absolute URL.
 Avatar getAvatarTagged(ApplicationUser remoteUser, ApplicationUser avatarUser)
           
 URI getAvatarURL(ApplicationUser remoteUser, ApplicationUser avatarUser)
          Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser.
 URI getAvatarURL(ApplicationUser remoteUser, ApplicationUser avatarUser, Avatar.Size size)
          Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser.
 URI getAvatarURL(com.atlassian.crowd.embedded.api.User remoteUser, String username)
          Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser.
 URI getAvatarURL(com.atlassian.crowd.embedded.api.User remoteUser, String username, Avatar.Size size)
          Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser.
 URI getAvatarUrlNoPermCheck(ApplicationUser avatarUser, Avatar.Size size)
          This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but does no permission checking.
 URI getAvatarUrlNoPermCheck(ApplicationUser avatarUser, Avatar avatar, Avatar.Size size)
          Builds a URI for a JIRA avatar with the requested size.
 URI getAvatarUrlNoPermCheck(String username, Avatar.Size size)
          This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but does no permission checking.
protected  Avatar getDefaultAvatar()
          Returns the default avatar, if configured.
 URI getProjectAvatarAbsoluteURL(Project project, Avatar.Size size)
          Returns the URL for the avatar of the given project.
 URI getProjectAvatarURL(Project project, Avatar.Size size)
          Returns the URL for the avatar of the given project.
 URI getProjectDefaultAvatarAbsoluteURL(Avatar.Size size)
          Returns the URL for the default avatar of a project.
 URI getProjectDefaultAvatarURL(Avatar.Size size)
          Returns the URL for the default avatar of a project.
 boolean hasCustomUserAvatar(ApplicationUser remoteUser, ApplicationUser user)
          Returns true if the user has configured a custom avatar, false otherwise.
 boolean hasCustomUserAvatar(com.atlassian.crowd.embedded.api.User remoteUser, String username)
          Returns true if the user has configured a custom avatar, false otherwise.
 boolean isGravatarEnabled()
          Returns true if Gravatar support is enabled.
 boolean isUsingExternalAvatar(ApplicationUser remoteUser, ApplicationUser avatarUser)
          Check whether a user currently has an external avatar (for example, a Gravatar).
protected  void setConfiguredAvatarIdFor(ApplicationUser user, Long avatarId)
          Sets the given avatar id as the configured avatar id for a user.
 void setCustomUserAvatar(ApplicationUser remoteUser, ApplicationUser user, Long avatarId)
          Sets a custom avatar for a given user.
 void setCustomUserAvatar(com.atlassian.crowd.embedded.api.User remoteUser, String username, Long avatarId)
          Sets a custom avatar for a given user.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AvatarServiceImpl

public AvatarServiceImpl(UserManager userManager,
                         AvatarManager avatarManager,
                         UserPropertyManager userPropertyManager,
                         VelocityRequestContextFactory velocityRequestContextFactory,
                         ApplicationProperties applicationProperties,
                         GravatarSettings gravatarSettings,
                         com.atlassian.plugin.PluginAccessor pluginAccessor)
Injectable constructor.

Method Detail

fromStaleUser

protected static ApplicationUser fromStaleUser(com.atlassian.crowd.embedded.api.User user)

getAvatar

public Avatar getAvatar(com.atlassian.crowd.embedded.api.User remoteUser,
                        String username)
                 throws AvatarsDisabledException
Description copied from interface: AvatarService
Returns the Avatar for the given user, if configured. If the user does not have a custom avatar, or if the calling user does not have permission to view the Avatar, this method returns the default avatar. If the user does not exist, this method returns the anonymous avatar.

If this method would return the default user avatar but none is configured, or if this method would return the anonymous avatar but none is configured, this method returns null.

Specified by:
getAvatar in interface AvatarService
Parameters:
remoteUser - the User that wants to view an Avatar
username - a String containing a username (may have been deleted)
Returns:
an Avatar, or null
Throws:
AvatarsDisabledException - if avatars are disabled

getAvatar

public Avatar getAvatar(ApplicationUser remoteUser,
                        ApplicationUser avatarUser)
                 throws AvatarsDisabledException
Description copied from interface: AvatarService
Returns the Avatar for the given user, if configured. If the user does not have a custom avatar, or if the calling user does not have permission to view the Avatar, this method returns the default avatar. If the user does not exist, this method returns the anonymous avatar.

If this method would return the default user avatar but none is configured, or if this method would return the anonymous avatar but none is configured, this method returns null.

Specified by:
getAvatar in interface AvatarService
Parameters:
remoteUser - the User that wants to view an Avatar
avatarUser - the User that the avatar will be returned for (if null it will return a default avatar if it's set or null)
Returns:
an Avatar, or null
Throws:
AvatarsDisabledException - if avatars are disabled

getAvatarTagged

public Avatar getAvatarTagged(ApplicationUser remoteUser,
                              ApplicationUser avatarUser)
                       throws AvatarsDisabledException
Specified by:
getAvatarTagged in interface AvatarService
Throws:
AvatarsDisabledException

getAvatarURL

public URI getAvatarURL(com.atlassian.crowd.embedded.api.User remoteUser,
                        String username)
                 throws AvatarsDisabledException
Description copied from interface: AvatarService
Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser. This method returns a URL for an avatar with the default size.

If the user does not have a custom avatar, or if the calling user does not have permission to view the Avatar, this method returns the URL of the default avatar. If the user does not exist, this method returns the URL of the anonymous avatar.

Specified by:
getAvatarURL in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
username - a String containing a username (may have been deleted)
Returns:
a URL that can be used to display the avatar
Throws:
AvatarsDisabledException - if avatars are disabled
See Also:
AvatarService.getAvatar(com.atlassian.crowd.embedded.api.User, String)

getAvatarURL

public URI getAvatarURL(ApplicationUser remoteUser,
                        ApplicationUser avatarUser)
                 throws AvatarsDisabledException
Description copied from interface: AvatarService
Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser. This method returns a URL for an avatar with the default size.

If the user does not have a custom avatar, or if the calling user does not have permission to view the Avatar, this method returns the URL of the default avatar. If the user does not exist, this method returns the URL of the anonymous avatar.

Specified by:
getAvatarURL in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
avatarUser - a User object to get the avatar for (if null, the default avatar is used)
Returns:
a URL that can be used to display the avatar
Throws:
AvatarsDisabledException - if avatars are disabled
See Also:
AvatarService.getAvatar(com.atlassian.crowd.embedded.api.User, String)

getAvatarURL

public URI getAvatarURL(com.atlassian.crowd.embedded.api.User remoteUser,
                        String username,
                        Avatar.Size size)
                 throws AvatarsDisabledException
Description copied from interface: AvatarService
Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser.

If the user does not have a custom avatar, or if the calling user does not have permission to view the Avatar, this method returns the URL of the default avatar. If the user does not exist, this method returns the URL of the anonymous avatar.

Specified by:
getAvatarURL in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
username - a String containing a username (may have been deleted)
size - the size of the avatar to be displayed (if null, the default size is used)
Returns:
a URL that can be used to display the avatar
Throws:
AvatarsDisabledException - if avatars are disabled
See Also:
AvatarService.getAvatar(com.atlassian.crowd.embedded.api.User, String)

getAvatarURL

public URI getAvatarURL(ApplicationUser remoteUser,
                        ApplicationUser avatarUser,
                        Avatar.Size size)
                 throws AvatarsDisabledException
Description copied from interface: AvatarService
Returns the URL for the avatar of the user having the given username for displaying on a page that should be shown for the passed in remoteUser.

If the user does not have a custom avatar, or if the calling user does not have permission to view the Avatar, this method returns the URL of the default avatar. If the user does not exist, this method returns the URL of the anonymous avatar.

Specified by:
getAvatarURL in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
avatarUser - a User to get the avatar for (if null, the default avatar is used)
size - the size of the avatar to be displayed (if null, the default size is used)
Returns:
a URL that can be used to display the avatar
Throws:
AvatarsDisabledException - if avatars are disabled
See Also:
AvatarService.getAvatar(com.atlassian.crowd.embedded.api.User, String)

getAvatarUrlNoPermCheck

public URI getAvatarUrlNoPermCheck(String username,
                                   Avatar.Size size)
                            throws AvatarsDisabledException
Description copied from interface: AvatarService
This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but does no permission checking.

Specified by:
getAvatarUrlNoPermCheck in interface AvatarService
Parameters:
username - a String containing a username (may have been deleted)
size - the size of the avatar to be displayed
Returns:
a URL that can be used to display the avatar
Throws:
AvatarsDisabledException - if avatars are disabled

getAvatarUrlNoPermCheck

public URI getAvatarUrlNoPermCheck(ApplicationUser avatarUser,
                                   Avatar.Size size)
                            throws AvatarsDisabledException
Description copied from interface: AvatarService
This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but does no permission checking.

Specified by:
getAvatarUrlNoPermCheck in interface AvatarService
Parameters:
avatarUser - a String containing a username (if null, the default avatar is used)
size - the size of the avatar to be displayed
Returns:
a URL that can be used to display the avatar
Throws:
AvatarsDisabledException - if avatars are disabled

getAvatarUrlNoPermCheck

public URI getAvatarUrlNoPermCheck(ApplicationUser avatarUser,
                                   Avatar avatar,
                                   @Nonnull
                                   Avatar.Size size)
Builds a URI for a JIRA avatar with the requested size.

Specified by:
getAvatarUrlNoPermCheck in interface AvatarService
Parameters:
avatarUser - the ApplicationUser whose avatar we'd like to display
avatar - the Avatar whose URI we want
size - the size in which the avatar should be displayed
Returns:
a URI that can be used to display the avatar
See Also:
AvatarService.getAvatar(com.atlassian.crowd.embedded.api.User, String)

getAvatarAbsoluteURL

public URI getAvatarAbsoluteURL(com.atlassian.crowd.embedded.api.User remoteUser,
                                String username,
                                Avatar.Size size)
                         throws AvatarsDisabledException
Description copied from interface: AvatarService
This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but returns an absolute URL.

Specified by:
getAvatarAbsoluteURL in interface AvatarService
Throws:
AvatarsDisabledException

getAvatarAbsoluteURL

public URI getAvatarAbsoluteURL(ApplicationUser remoteUser,
                                ApplicationUser avatarUser,
                                Avatar.Size size)
                         throws AvatarsDisabledException
Description copied from interface: AvatarService
This is the same as AvatarService.getAvatarURL(com.atlassian.crowd.embedded.api.User, String, com.atlassian.jira.avatar.Avatar.Size) but returns an absolute URL.

Specified by:
getAvatarAbsoluteURL in interface AvatarService
Throws:
AvatarsDisabledException

hasCustomUserAvatar

public boolean hasCustomUserAvatar(com.atlassian.crowd.embedded.api.User remoteUser,
                                   String username)
Description copied from interface: AvatarService
Returns true if the user has configured a custom avatar, false otherwise.

Specified by:
hasCustomUserAvatar in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
username - the username of the user whose avatar we will check
Returns:
a boolean indicating whether the given user has configued a custom avatar

hasCustomUserAvatar

public boolean hasCustomUserAvatar(ApplicationUser remoteUser,
                                   ApplicationUser user)
Description copied from interface: AvatarService
Returns true if the user has configured a custom avatar, false otherwise.

Specified by:
hasCustomUserAvatar in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
user - the username of the user whose avatar we will check
Returns:
a boolean indicating whether the given user has configued a custom avatar

setCustomUserAvatar

public void setCustomUserAvatar(com.atlassian.crowd.embedded.api.User remoteUser,
                                String username,
                                Long avatarId)
                         throws AvatarsDisabledException,
                                NoPermissionException
Description copied from interface: AvatarService
Sets a custom avatar for a given user.

Specified by:
setCustomUserAvatar in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
username - the username of the user whose avatar we will configure
avatarId - the id of the avatar to configure for the user
Throws:
AvatarsDisabledException - if avatars are disabled
NoPermissionException - if the remote user does not have permission to update the given user's avatar
See Also:
AvatarService.canSetCustomUserAvatar(com.atlassian.crowd.embedded.api.User, String)

setCustomUserAvatar

public void setCustomUserAvatar(ApplicationUser remoteUser,
                                ApplicationUser user,
                                Long avatarId)
                         throws AvatarsDisabledException,
                                NoPermissionException
Description copied from interface: AvatarService
Sets a custom avatar for a given user.

Specified by:
setCustomUserAvatar in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
user - the user whose avatar we will configure
avatarId - the id of the avatar to configure for the user
Throws:
AvatarsDisabledException - if avatars are disabled
NoPermissionException - if the remote user does not have permission to update the given user's avatar
See Also:
AvatarService.canSetCustomUserAvatar(com.atlassian.crowd.embedded.api.User, String)

canSetCustomUserAvatar

public boolean canSetCustomUserAvatar(com.atlassian.crowd.embedded.api.User remoteUser,
                                      String username)
Description copied from interface: AvatarService
Returns a boolean indicating whether the calling user can edit the custom user avatar for the user with the given username.

Specified by:
canSetCustomUserAvatar in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
username - the username of the user whose avatar we will configure
Returns:
a indicating whether the calling user can edit the custom user avatar for another user

canSetCustomUserAvatar

public boolean canSetCustomUserAvatar(ApplicationUser remoteUser,
                                      ApplicationUser user)
Description copied from interface: AvatarService
Returns a boolean indicating whether the calling user can edit the custom user avatar for the user with the given username.

Specified by:
canSetCustomUserAvatar in interface AvatarService
Parameters:
remoteUser - a User object for the currently logged in user
user - the user whose avatar we will configure
Returns:
a indicating whether the calling user can edit the custom user avatar for another user

getProjectAvatarURL

public URI getProjectAvatarURL(Project project,
                               Avatar.Size size)
Description copied from interface: AvatarService
Returns the URL for the avatar of the given project.

If running in the context of a web request, this will return a URL relative to the server root (ie "/jira/..."). Otherwise, it will return an absolute URL (eg. "http://example.com/jira/...").

Specified by:
getProjectAvatarURL in interface AvatarService
Parameters:
project - the Project of which to get the avatar URL
size - the size of the avatar to be displayed (if null, the default size is used)
Returns:
a URL that can be used to display the avatar

getProjectAvatarAbsoluteURL

public URI getProjectAvatarAbsoluteURL(Project project,
                                       Avatar.Size size)
Description copied from interface: AvatarService
Returns the URL for the avatar of the given project.

This will always return an absolute URL (eg. "http://example.com/jira/...").

Specified by:
getProjectAvatarAbsoluteURL in interface AvatarService
Parameters:
project - the Project of which to get the avatar URL
size - the size of the avatar to be displayed (if null, the default size is used)
Returns:
a URL that can be used to display the avatar

getProjectDefaultAvatarURL

public URI getProjectDefaultAvatarURL(Avatar.Size size)
Description copied from interface: AvatarService
Returns the URL for the default avatar of a project.

If running in the context of a web request, this will return a URL relative to the server root (ie "/jira/..."). Otherwise, it will return an absolute URL (eg. "http://example.com/jira/...").

Specified by:
getProjectDefaultAvatarURL in interface AvatarService
Parameters:
size - the size of the avatar to be displayed (if null, the default size is used)
Returns:
a URL that can be used to display the avatar

getProjectDefaultAvatarAbsoluteURL

public URI getProjectDefaultAvatarAbsoluteURL(Avatar.Size size)
Description copied from interface: AvatarService
Returns the URL for the default avatar of a project.

This will always return an absolute URL (eg. "http://example.com/jira/...").

Specified by:
getProjectDefaultAvatarAbsoluteURL in interface AvatarService
Parameters:
size - the size of the avatar to be displayed (if null, the default size is used)
Returns:
a URL that can be used to display the avatar

configuredAvatarIdFor

protected Long configuredAvatarIdFor(ApplicationUser user)
Returns the avatar id that is configured for the given User. If the user has not configured an avatar, this method returns null.

Parameters:
user - the user whose avatar we want
Returns:
an avatar id, or null

isGravatarEnabled

public boolean isGravatarEnabled()
Returns true if Gravatar support is enabled.

Specified by:
isGravatarEnabled in interface AvatarService
Returns:
a boolean indicating whether Gravatar support is on

isUsingExternalAvatar

public boolean isUsingExternalAvatar(ApplicationUser remoteUser,
                                     ApplicationUser avatarUser)
Description copied from interface: AvatarService
Check whether a user currently has an external avatar (for example, a Gravatar). Use AvatarService.getAvatarURL(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.user.ApplicationUser) to get the avatar URL.

Specified by:
isUsingExternalAvatar in interface AvatarService
Returns:
a boolean indicating whether the given currently user has an external avatar

setConfiguredAvatarIdFor

protected void setConfiguredAvatarIdFor(ApplicationUser user,
                                        Long avatarId)
Sets the given avatar id as the configured avatar id for a user.

Parameters:
user - the User whose avatar is being configured
avatarId - the avatar id to configure

canViewAvatar

protected boolean canViewAvatar(ApplicationUser user,
                                Avatar avatar)
Returns true if the passed in user has permission to view the passed in avatar. By definition, any user can view the system avatars (e.g. avatars with no owner).

Parameters:
user - a User
avatar - an Avatar
Returns:
a boolean indicating whether the passed in user has permission to view the passed in avatar

getDefaultAvatar

protected Avatar getDefaultAvatar()
Returns the default avatar, if configured. Otherwise returns null.

Returns:
the default Avatar, or null

getAnonymousAvatar

protected Avatar getAnonymousAvatar()
Returns the anonymous avatar, if configured. Otherwise returns null.

Returns:
the anonymous avatar, or null


Copyright © 2002-2015 Atlassian. All Rights Reserved.