View Javadoc

1   package com.atlassian.sal.api.user;
2   
3   import java.net.URI;
4   
5   /**
6    * Interface encapsulating a user's profile information. Any of the properties except
7    * for the username and the userKey may be {@code null}, which indicates either that the underlying application
8    * does not support that profile data, or that the user did not provide that profile data.
9    *
10   * Note: implementors of this interface should override the {@link #equals(Object)} method such that two users with the
11   * same userKey are considered equal.
12   * 
13   * @since 2.2.0
14   */
15  public interface UserProfile
16  {
17      /**
18       * Returns the key of the user associated with this profile information.
19       *
20       * Note: the key is meant to uniquely identify a user, and be immutable for the duration of the life of the user. It
21       * is however not meant to be displayed: please use {@link #getUsername()} or {@link #getFullName()} for that purpose.
22       *
23       * @return the key of the user associated with this profile information.
24       * @since 2.10
25       * @see {@link UserKey}
26       */
27      UserKey getUserKey();
28  
29      /**
30       * Returns the username of the user associated with this profile information.
31       *
32       * Note: depending on the product, the username might change during the life of the user. If you need a stable
33       * identifier, please use {@link #getUserKey()}.
34       *
35       * @return the username of the user associated with this profile information
36       * @see {@link #getUserKey()}
37       */
38      String getUsername();
39  
40      /**
41       * Returns the full name of the user associated with this profile information
42       *
43       * @return the full name of the user associated with this profile information,
44       * or {@code null} if a full name was not provided or the application does not
45       * support the full name as profile data
46       */
47      String getFullName();
48  
49      /**
50       * Returns the email address of the user associated with this profile
51       *
52       * @return the email address of the user associated with this profile,
53       * or {@code null} if an email address was not provided or the application does
54       * not support email addresses as profile data
55       */
56      String getEmail();
57  
58      /**
59       * Returns a URI for the user's profile picture. The returned URI will point
60       * to an image of the user's profile picture no smaller than the requested size.
61       *
62       * The URI will either be relative to the application's base URI, or absolute if
63       * the profile picture is being served by an external server
64       *
65       * @param width the preferred width of the desired picture
66       * @param height the preferred height of the desired picture
67       * @return a URI pointing to an image of the user's profile picture, or {@code null}
68       * if a profile picture was not provided, the application does not support
69       * profile pictures as profile data, or the application was unable to provide an
70       * image larger than or equal to the requested size
71       */
72      URI getProfilePictureUri(int width, int height);
73  
74      /**
75       * Returns a URI for the user's profile picture. The returned URI will point
76       * to the largest possible unscaled image of the user's profile picture that the application
77       * can provide
78       *
79       * The URI will either be relative to the application's base URI, or absolute if
80       * the profile picture is being served by an external server
81       *
82       * @return a URI pointing to an image of the user's profile picture, or {@code null}
83       * if a profile picture was not provided or the application does not support
84       * profile pictures as profile data
85       */
86      URI getProfilePictureUri();
87  
88      /**
89       * Returns a URI for the user's profile page. The URI will be relative to
90       * the application's base URI
91       *
92       * @return a relative URI pointing to the user's profile page, or {@code null} if
93       * the user does not have a profile page or the application does not support profile
94       * pages
95       */
96      URI getProfilePageUri();
97  
98  
99  }