Interface ApplicationRoleManager
- All Known Implementing Classes:
DefaultApplicationRoleManager,MockApplicationRoleManager
ApplicationRoles. It is generally recommended to use
ApplicationAuthorizationService or ApplicationRoleAdminService rather than this class, as the service
layer contains additional validation and business logic.- Since:
- 7.0
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionSet<com.atlassian.application.api.ApplicationKey>Returns an immutableSetofApplicationKeys that are configured as the default applications for new users.Set<com.atlassian.crowd.embedded.api.Group>getDefaultGroups(com.atlassian.application.api.ApplicationKey key) Get the defaultGroups associated with theApplicationRolebacked by a (potentially exceeded) license.Set<com.atlassian.crowd.embedded.api.Group>Get theSetof group names that have been associated with all theApplicationRoles that have a backing (but potentially exceeded) license.intgetRemainingSeats(com.atlassian.application.api.ApplicationKey key) Retrieve the number of available (unoccupied) user seats for theApplicationRolebacked by a (potentially exceeded) license.intgetRemainingSeatsAsync(com.atlassian.application.api.ApplicationKey key) Async version ofgetRemainingSeats(ApplicationKey).io.atlassian.fugue.Option<ApplicationRole>getRole(com.atlassian.application.api.ApplicationKey key) Returns theApplicationRoleidentified by the givenApplicationKey, orOption.none()if no suchApplicationRoleexists.getRoles()Returns an immutableSetof allApplicationRoles that are backed by a (potentially exceeded) license.getRolesForGroup(com.atlassian.crowd.embedded.api.Group group) Returns theSetofApplicationRoles associated with the givenGroup, or groups for which the given group is a nested group (sub-group).intgetUserCount(com.atlassian.application.api.ApplicationKey key) Retrieve the number of active users for the givenApplicationRole.intgetUserCountAsync(com.atlassian.application.api.ApplicationKey key) Async version ofgetUserCount(ApplicationKey).booleanhasAnyRole(ApplicationUser user) Returns true if the given user has been assigned to anyApplicationRolethat is backed by a (potentially exceeded) license.booleanReturns true if the user limits of all of the given user's assignedApplicationRoles have been exceeded.booleanAsync version ofhasExceededAllRoles(ApplicationUser).booleanhasSeatsAvailable(com.atlassian.application.api.ApplicationKey key, int seatCount) Determines whether theApplicationRolebacked by a license has the requested number of user seats available.booleanhasSeatsAvailableAsync(com.atlassian.application.api.ApplicationKey key, int seatCount) Async version ofhasSeatsAvailable(ApplicationKey, int).booleanReturns true if the number of users assigned to anyApplicationRoleexceeds the number of seats granted to that role by its license.booleanAsync version ofisAnyRoleLimitExceeded().booleanisRoleInstalledAndLicensed(com.atlassian.application.api.ApplicationKey key) Determines whether an application identified by the givenApplicationKeyis installed and running in this JIRA instance AND has a backing license key.booleanisRoleLimitExceeded(com.atlassian.application.api.ApplicationKey role) Returnstrueif the number of users assigned to the givenApplicationRoleexceeds the number of seats granted by its license.booleanisRoleLimitExceededAsync(com.atlassian.application.api.ApplicationKey role) Async version ofisRoleLimitExceeded(ApplicationKey).voidremoveGroupFromRoles(com.atlassian.crowd.embedded.api.Group group) Removes any/all associations of the given group from allApplicationRoles (irrespective of whether theApplicationRoles is backed by a license).default booleanDeprecated.since 7.0.1 as this always returns true in JIRA 7setRole(ApplicationRole role) Save the passedApplicationRoleinformation to the database.booleanuserHasRole(ApplicationUser user, com.atlassian.application.api.ApplicationKey key) Returnstrueif the passed user belongs to theApplicationRoleassociated with the given key.booleanuserOccupiesRole(ApplicationUser user, com.atlassian.application.api.ApplicationKey key) Returnstrueif the passed user occupies a seat in theApplicationRoleassociated with the given key.
-
Method Details
-
getRole
@Nonnull io.atlassian.fugue.Option<ApplicationRole> getRole(@Nonnull com.atlassian.application.api.ApplicationKey key) Returns theApplicationRoleidentified by the givenApplicationKey, orOption.none()if no suchApplicationRoleexists.Note:
ApplicationRoles returned by this method are guaranteed to be backed by a (potentially exceeded) license, however the installation state of the plugin/product that uses this role may not necessarily physically installed.- Parameters:
key- theApplicationKeyof the role to search for.- Returns:
- the
ApplicationRoleassociated with the passed role identifier, orOption.none().
-
getRoles
Returns an immutableSetof allApplicationRoles that are backed by a (potentially exceeded) license.- Returns:
- the
Setof allApplicationRoles that are backed by a (potentially exceeded) license.
-
getDefaultApplicationKeys
Returns an immutableSetofApplicationKeys that are configured as the default applications for new users.- Returns:
- the
SetofApplicationKeys that are configured as the default applications for new users.
-
hasAnyRole
Returns true if the given user has been assigned to anyApplicationRolethat is backed by a (potentially exceeded) license.- Returns:
- true if the given user has been assigned to any
ApplicationRolethat is backed by a (potentially exceeded) license.
-
userHasRole
boolean userHasRole(@Nullable ApplicationUser user, com.atlassian.application.api.ApplicationKey key) Returnstrueif the passed user belongs to theApplicationRoleassociated with the given key. NOTE: This does not check that the application is licensed with a valid license.- Parameters:
user- the user to check - if this is null, returnsfalsekey- the key corresponding to theApplicationRole- Returns:
- true if the user belongs to a group of the given application
-
userOccupiesRole
boolean userOccupiesRole(@Nullable ApplicationUser user, com.atlassian.application.api.ApplicationKey key) Returnstrueif the passed user occupies a seat in theApplicationRoleassociated with the given key.- Parameters:
user- the user to check - if this is null, returnsfalsekey- the key corresponding to theApplicationRole- Returns:
- true if the user occupies seat in the given application
-
hasExceededAllRoles
Returns true if the user limits of all of the given user's assignedApplicationRoles have been exceeded. The user limit of anApplicationRoleis exceeded when the combined number of users assigned to that role (through assigned groups) exceeds the number of seats granted for that role in its license.Note: this method does NOT take into account whether licenses for application roles are
The method is known to be slow in some circumstances, and to block Jira instance. It's strongly recommended to useexpired; this must be tested separately.hasExceededAllRolesAsync(ApplicationUser)async version of the method}- Parameters:
user- the user whose roles will be checked.- Returns:
trueif all of theuser's roles have user counts that exceed the number of seats granted by licenses.
-
hasExceededAllRolesAsync
Async version ofhasExceededAllRoles(ApplicationUser). The method returns the last know value without waiting for the current changes to be propagated. This implementation is safer and offers a better performance. Returns true if the user limits of all of the given user's assignedApplicationRoles have been exceeded. The user limit of anApplicationRoleis exceeded when the combined number of users assigned to that role (through assigned groups) exceeds the number of seats granted for that role in its license.Note: this method does NOT take into account whether licenses for application roles are
expired; this must be tested separately.- Parameters:
user- the user whose roles will be checked.- Returns:
trueif all of theuser's roles have user counts that exceed the number of seats granted by licenses.
-
isAnyRoleLimitExceeded
boolean isAnyRoleLimitExceeded()Returns true if the number of users assigned to anyApplicationRoleexceeds the number of seats granted to that role by its license.The method is known to be slow in some circumstances, and to block Jira instance. It's strongly recommended to use
isAnyRoleLimitExceededAsync()async version of the method} Note: this method does NOT take into account whether licenses for installed roles areexpired; this must be tested separately.- Returns:
- true if the number of users for any role is greater than the number of seats granted to that role by its license.
-
isAnyRoleLimitExceededAsync
boolean isAnyRoleLimitExceededAsync()Async version ofisAnyRoleLimitExceeded(). The method returns the last know value without waiting for the current changes to be propagated. This implementation is safer and offers a better performance. Returns true if the number of users assigned to anyApplicationRoleexceeds the number of seats granted to that role by its license.Note: this method does NOT take into account whether licenses for installed roles are
expired; this must be tested separately.- Returns:
- true if the number of users for any role is greater than the number of seats granted to that role by its license.
-
isRoleLimitExceeded
boolean isRoleLimitExceeded(@Nonnull com.atlassian.application.api.ApplicationKey role) Returnstrueif the number of users assigned to the givenApplicationRoleexceeds the number of seats granted by its license. This method unconditionally returnsfalseif the passed role is not considered to be installed (ie: backed by a license).Note: this method does NOT take into account whether licenses for installed roles are
The method is known to be slow in some circumstances, and to block Jira instance. It's strongly recommended to useexpired; this must be tested separately.async version of the method- Parameters:
role- the identifier of theApplicationRole.- Returns:
trueif the installedApplicationRoleis exceeded orfalseotherwise.
-
isRoleLimitExceededAsync
boolean isRoleLimitExceededAsync(@Nonnull com.atlassian.application.api.ApplicationKey role) Async version ofisRoleLimitExceeded(ApplicationKey). The method returns the last know value without waiting for the current changes to be propagated. This implementation is safer and offers a better performance. Returnstrueif the number of users assigned to the givenApplicationRoleexceeds the number of seats granted by its license. This method unconditionally returnsfalseif the passed role is not considered to be installed (ie: backed by a license).Note: this method does NOT take into account whether licenses for installed roles are
expired; this must be tested separately.- Parameters:
role- the identifier of theApplicationRole.- Returns:
trueif the installedApplicationRoleis exceeded orfalseotherwise.
-
getRolesForUser
- Parameters:
user- the user whose roles will be checked.- Returns:
- the
SetofApplicationRoles for the givenuser.
-
getOccupiedLicenseRolesForUser
Returns theSetofApplicationRoles that the givenApplicationUseroccupies seats in.ApplicationUserhas to actively take a seat in the returnedApplicationRoles eg. for anApplicationUserwho has access to SOFTWARE and implicitly (or explicitly) CORE, they will only have SOFTWARE returned. For anApplicationUserwho has explicit access to SOFTWARE and CORE - with the SOFTWARE license exceeded, this will return both as the user effectively occupies a seat in both CORE and SOFTWARE now.- Parameters:
user- the user whose roles will be checked.- Returns:
- the
SetofApplicationRoles that the givenuseris actively taking seats.
-
getRolesForGroup
Returns theSetofApplicationRoles associated with the givenGroup, or groups for which the given group is a nested group (sub-group).- Parameters:
group- the group which roles will be checked.- Returns:
- the
SetofApplicationRoles associated with the group or its super-groups.
-
getGroupsForLicensedRoles
Get theSetof group names that have been associated with all theApplicationRoles that have a backing (but potentially exceeded) license.- Returns:
- Groups associated with all the
ApplicationRoles that have a backing (but potentially exceeded) license.
-
removeGroupFromRoles
void removeGroupFromRoles(@Nonnull com.atlassian.crowd.embedded.api.Group group) Removes any/all associations of the given group from allApplicationRoles (irrespective of whether theApplicationRoles is backed by a license).- Parameters:
group- the group to remove.
-
isRoleInstalledAndLicensed
boolean isRoleInstalledAndLicensed(@Nonnull com.atlassian.application.api.ApplicationKey key) Determines whether an application identified by the given
ApplicationKeyis installed and running in this JIRA instance AND has a backing license key.- Parameters:
key- the key that identifies theApplicationRolebacked by a (potentially exceeded) license.- Returns:
truewhen theApplicationRolebacked by a (potentially exceeded) license has an associated application installed and running in this JIRA instance.
-
setRole
Save the passedApplicationRoleinformation to the database. This method will only accept the passed role if:- The role is backed by a (potentially exceeded) license.
- The role only contains currently valid groups.
- The default group are not a subset of the groups in the role.
- Parameters:
role- the role to save.- Returns:
- the role as persisted to the database.
- Throws:
IllegalArgumentException- if passed role does not contain valid groups, valid default groups or if the role does not have a backing license.
-
getUserCount
int getUserCount(@Nonnull com.atlassian.application.api.ApplicationKey key) Retrieve the number of active users for the givenApplicationRole. It will uniquely count all users who are found in the groups associated with the application. The method is known to be slow in some circumstances, and to block Jira instance. It's strongly recommended to usegetUserCountAsync(ApplicationKey)async version of the method}- Parameters:
key- the key that identifies theApplicationRole.- Returns:
- the number of active users for the given
ApplicationRole, or zero if theApplicationRoledoes not exist.
-
getUserCountAsync
int getUserCountAsync(@Nonnull com.atlassian.application.api.ApplicationKey key) Async version ofgetUserCount(ApplicationKey). The method returns the last know value without waiting for the current changes to be propagated. This implementation is safer and offers a better performance. Retrieve the number of active users for the givenApplicationRole. It will uniquely count all users who are found in the groups associated with the application.- Parameters:
key- the key that identifies theApplicationRole.- Returns:
- the number of active users for the given
ApplicationRole, or zero if theApplicationRoledoes not exist.
-
getRemainingSeats
int getRemainingSeats(@Nonnull com.atlassian.application.api.ApplicationKey key) Retrieve the number of available (unoccupied) user seats for theApplicationRolebacked by a (potentially exceeded) license. The method is known to be slow in some circumstances, and to block Jira instance. It's strongly recommended to usegetRemainingSeatsAsync(ApplicationKey)async version of the method}- Parameters:
key- the key that identifies the licensedApplicationRole.- Returns:
- the number of remaining users seats. Will return zero when there are more users than seats licensed, the
ApplicationRoleis not valid or there are as many active users as seats in the license. When the license is unlimited, it will return minus one (-1) - See Also:
-
getRemainingSeatsAsync
int getRemainingSeatsAsync(@Nonnull com.atlassian.application.api.ApplicationKey key) Async version ofgetRemainingSeats(ApplicationKey). The method returns the last know value without waiting for the current changes to be propagated. This implementation is safer and offers a better performance. Retrieve the number of available (unoccupied) user seats for theApplicationRolebacked by a (potentially exceeded) license.- Parameters:
key- the key that identifies the licensedApplicationRole.- Returns:
- the number of remaining users seats. Will return zero when there are more users than seats licensed, the
ApplicationRoleis not valid or there are as many active users as seats in the license. When the license is unlimited, it will return minus one (-1) - See Also:
-
hasSeatsAvailable
boolean hasSeatsAvailable(@Nonnull com.atlassian.application.api.ApplicationKey key, int seatCount) Determines whether theApplicationRolebacked by a license has the requested number of user seats available. The method is known to be slow in some circumstances, and to block Jira instance. It's strongly recommended to usehasSeatsAvailableAsync(ApplicationKey, int)async version of the method}- Parameters:
key- the key that identifies theApplicationRole.seatCount- the number of user seats that thisApplicationRoleshould have capacity for.- Returns:
trueif theApplicationRolefor the providedApplicationKeyhas the number of user seats available.falseif the there are not enough seats available.
-
hasSeatsAvailableAsync
boolean hasSeatsAvailableAsync(@Nonnull com.atlassian.application.api.ApplicationKey key, int seatCount) Async version ofhasSeatsAvailable(ApplicationKey, int). The method returns the last know value without waiting for the current changes to be propagated. This implementation is safer and offers a better performance. Determines whether theApplicationRolebacked by a license has the requested number of user seats available.- Parameters:
key- the key that identifies theApplicationRole.seatCount- the number of user seats that thisApplicationRoleshould have capacity for.- Returns:
trueif theApplicationRolefor the providedApplicationKeyhas the number of user seats available.falseif the there are not enough seats available.
-
getDefaultGroups
@Nonnull Set<com.atlassian.crowd.embedded.api.Group> getDefaultGroups(@Nonnull com.atlassian.application.api.ApplicationKey key) Get the defaultGroups associated with theApplicationRolebacked by a (potentially exceeded) license.- Parameters:
key- the key that identifies theApplicationRole.- Returns:
- the
Setof default groups associated with theApplicationRole.
-
rolesEnabled
Deprecated.since 7.0.1 as this always returns true in JIRA 7Determines whetherApplicationRoles are enabled.- Returns:
truewhenApplicationRoleare enabled,falseotherwise.
-