com.atlassian.jira.security.roles
Class CachingProjectRoleAndActorStore
java.lang.Object
com.atlassian.jira.security.roles.CachingProjectRoleAndActorStore
- All Implemented Interfaces:
- ProjectRoleAndActorStore
public class CachingProjectRoleAndActorStore
- extends Object
- implements ProjectRoleAndActorStore
A caching implementation of the ProjectRoleAndActorStore that delegates to another ProjectRoleAndActorStore.
This class maintains two separate unrelated caches, one for ProjectRoles and another for the actors associated with a
Project/ProjectRole combination. These use separate approaches to maintain correctness under concurrent usage.
The caching of the ProjectRoleActors maintains its correctness under concurrent updates/miss population by using
ConcurrentMap.putIfAbsent(Object,Object) to store the result of a retrieval operation from the database
(non-mutative), but Map.put(Object,Object) to store the result of an update.
|
Method Summary |
ProjectRole |
addProjectRole(ProjectRole projectRole)
|
void |
applyDefaultsRolesToProject(Project project)
|
void |
clearCaches()
|
void |
deleteProjectRole(ProjectRole projectRole)
|
Collection<ProjectRole> |
getAllProjectRoles()
|
DefaultRoleActors |
getDefaultRoleActors(Long projectRoleId)
|
Collection<Long> |
getProjectIdsContainingRoleActorByKeyAndType(String key,
String type)
|
Map<Long,List<String>> |
getProjectIdsForUserInGroupsBecauseOfRole(List<Long> projectsToLimitBy,
ProjectRole projectRole,
String projectRoleType,
String userKey)
|
ProjectRole |
getProjectRole(Long id)
|
ProjectRoleActors |
getProjectRoleActors(Long projectRoleId,
Long projectId)
|
ProjectRole |
getProjectRoleByName(String name)
|
void |
onClearCache(ClearCacheEvent event)
|
void |
removeAllRoleActorsByKeyAndType(String key,
String type)
|
void |
removeAllRoleActorsByProject(Project project)
|
List<Long> |
roleActorOfTypeExistsForProjects(List<Long> projectsToLimitBy,
ProjectRole projectRole,
String projectRoleType,
String projectRoleParameter)
|
void |
updateDefaultRoleActors(DefaultRoleActors defaultRoleActors)
|
void |
updateProjectRole(ProjectRole projectRole)
|
void |
updateProjectRoleActors(ProjectRoleActors projectRoleActors)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CachingProjectRoleAndActorStore
public CachingProjectRoleAndActorStore(ProjectRoleAndActorStore delegate,
RoleActorFactory roleActorFactory,
com.atlassian.cache.CacheManager cacheManager)
getAllProjectRoles
public Collection<ProjectRole> getAllProjectRoles()
- Specified by:
getAllProjectRoles in interface ProjectRoleAndActorStore
getProjectRole
public ProjectRole getProjectRole(Long id)
- Specified by:
getProjectRole in interface ProjectRoleAndActorStore
getProjectRoleByName
public ProjectRole getProjectRoleByName(String name)
- Specified by:
getProjectRoleByName in interface ProjectRoleAndActorStore
addProjectRole
public ProjectRole addProjectRole(ProjectRole projectRole)
- Specified by:
addProjectRole in interface ProjectRoleAndActorStore
updateProjectRole
public void updateProjectRole(ProjectRole projectRole)
- Specified by:
updateProjectRole in interface ProjectRoleAndActorStore
deleteProjectRole
public void deleteProjectRole(ProjectRole projectRole)
- Specified by:
deleteProjectRole in interface ProjectRoleAndActorStore
getDefaultRoleActors
public DefaultRoleActors getDefaultRoleActors(Long projectRoleId)
- Specified by:
getDefaultRoleActors in interface ProjectRoleAndActorStore
getProjectRoleActors
public ProjectRoleActors getProjectRoleActors(Long projectRoleId,
Long projectId)
- Specified by:
getProjectRoleActors in interface ProjectRoleAndActorStore
updateProjectRoleActors
public void updateProjectRoleActors(ProjectRoleActors projectRoleActors)
- Specified by:
updateProjectRoleActors in interface ProjectRoleAndActorStore
updateDefaultRoleActors
public void updateDefaultRoleActors(DefaultRoleActors defaultRoleActors)
- Specified by:
updateDefaultRoleActors in interface ProjectRoleAndActorStore
applyDefaultsRolesToProject
public void applyDefaultsRolesToProject(Project project)
- Specified by:
applyDefaultsRolesToProject in interface ProjectRoleAndActorStore
removeAllRoleActorsByKeyAndType
public void removeAllRoleActorsByKeyAndType(String key,
String type)
- Specified by:
removeAllRoleActorsByKeyAndType in interface ProjectRoleAndActorStore
removeAllRoleActorsByProject
public void removeAllRoleActorsByProject(Project project)
- Specified by:
removeAllRoleActorsByProject in interface ProjectRoleAndActorStore
getProjectIdsContainingRoleActorByKeyAndType
public Collection<Long> getProjectIdsContainingRoleActorByKeyAndType(String key,
String type)
- Specified by:
getProjectIdsContainingRoleActorByKeyAndType in interface ProjectRoleAndActorStore
roleActorOfTypeExistsForProjects
public List<Long> roleActorOfTypeExistsForProjects(List<Long> projectsToLimitBy,
ProjectRole projectRole,
String projectRoleType,
String projectRoleParameter)
- Specified by:
roleActorOfTypeExistsForProjects in interface ProjectRoleAndActorStore
getProjectIdsForUserInGroupsBecauseOfRole
public Map<Long,List<String>> getProjectIdsForUserInGroupsBecauseOfRole(List<Long> projectsToLimitBy,
ProjectRole projectRole,
String projectRoleType,
String userKey)
- Specified by:
getProjectIdsForUserInGroupsBecauseOfRole in interface ProjectRoleAndActorStore
onClearCache
@EventListener
public void onClearCache(ClearCacheEvent event)
clearCaches
public void clearCaches()
Copyright © 2002-2014 Atlassian. All Rights Reserved.