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.