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 implemenation of the ProjectRoleAndActorStore that delegates the the OfBizProjectRoleAndActorStore
.
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.
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)
addProjectRole
public ProjectRole addProjectRole(ProjectRole projectRole)
throws DataAccessException
- Specified by:
addProjectRole
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
updateProjectRole
public void updateProjectRole(ProjectRole projectRole)
throws DataAccessException
- Specified by:
updateProjectRole
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getAllProjectRoles
public Collection getAllProjectRoles()
throws DataAccessException
- Specified by:
getAllProjectRoles
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getProjectRole
public ProjectRole getProjectRole(Long id)
throws DataAccessException
- Specified by:
getProjectRole
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getProjectRoleByName
public ProjectRole getProjectRoleByName(String name)
throws DataAccessException
- Specified by:
getProjectRoleByName
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
deleteProjectRole
public void deleteProjectRole(ProjectRole projectRole)
throws DataAccessException
- Specified by:
deleteProjectRole
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getDefaultRoleActors
public DefaultRoleActors getDefaultRoleActors(Long projectRoleId)
throws DataAccessException
- Specified by:
getDefaultRoleActors
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getProjectRoleActors
public ProjectRoleActors getProjectRoleActors(Long projectRoleId,
Long projectId)
throws DataAccessException
- Specified by:
getProjectRoleActors
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
updateProjectRoleActors
public void updateProjectRoleActors(ProjectRoleActors projectRoleActors)
throws DataAccessException
- Specified by:
updateProjectRoleActors
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
updateDefaultRoleActors
public void updateDefaultRoleActors(DefaultRoleActors defaultRoleActors)
throws DataAccessException
- Specified by:
updateDefaultRoleActors
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
applyDefaultsRolesToProject
public void applyDefaultsRolesToProject(Project project)
throws DataAccessException
- Specified by:
applyDefaultsRolesToProject
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
removeAllRoleActorsByNameAndType
public void removeAllRoleActorsByNameAndType(String name,
String type)
throws DataAccessException
- Specified by:
removeAllRoleActorsByNameAndType
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
removeAllRoleActorsByProject
public void removeAllRoleActorsByProject(Project project)
throws DataAccessException
- Specified by:
removeAllRoleActorsByProject
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getProjectIdsContainingRoleActorByNameAndType
public Collection getProjectIdsContainingRoleActorByNameAndType(String name,
String type)
throws DataAccessException
- Specified by:
getProjectIdsContainingRoleActorByNameAndType
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
roleActorOfTypeExistsForProjects
public List roleActorOfTypeExistsForProjects(List projectsToLimitBy,
ProjectRole projectRole,
String projectRoleType,
String projectRoleParameter)
throws DataAccessException
- Specified by:
roleActorOfTypeExistsForProjects
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
getProjectIdsForUserInGroupsBecauseOfRole
public Map getProjectIdsForUserInGroupsBecauseOfRole(List projectsToLimitBy,
ProjectRole projectRole,
String projectRoleType,
String userName)
throws DataAccessException
- Specified by:
getProjectIdsForUserInGroupsBecauseOfRole
in interface ProjectRoleAndActorStore
- Throws:
DataAccessException
clearCaches
public void clearCaches()
Copyright © 2002-2007 Atlassian. All Rights Reserved.