public class

CachingProjectRoleAndActorStore

extends Object
implements ProjectRoleAndActorStore
java.lang.Object
   ↳ com.atlassian.jira.security.roles.CachingProjectRoleAndActorStore

Class Overview

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 putIfAbsent(Object, Object) to store the result of a retrieval operation from the database (non-mutative), but put(Object, Object) to store the result of an update.

Summary

Public Constructors
CachingProjectRoleAndActorStore(ProjectRoleAndActorStore delegate, RoleActorFactory roleActorFactory, CacheManager cacheManager)
Public Methods
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<LongList<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)
boolean isGroupUsed(String group)
@EventListener 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)
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.atlassian.jira.security.roles.ProjectRoleAndActorStore

Public Constructors

public CachingProjectRoleAndActorStore (ProjectRoleAndActorStore delegate, RoleActorFactory roleActorFactory, CacheManager cacheManager)

Public Methods

public ProjectRole addProjectRole (ProjectRole projectRole)

public void applyDefaultsRolesToProject (Project project)

public void clearCaches ()

public void deleteProjectRole (ProjectRole projectRole)

public Collection<ProjectRole> getAllProjectRoles ()

public DefaultRoleActors getDefaultRoleActors (Long projectRoleId)

public Collection<Long> getProjectIdsContainingRoleActorByKeyAndType (String key, String type)

public Map<LongList<String>> getProjectIdsForUserInGroupsBecauseOfRole (List<Long> projectsToLimitBy, ProjectRole projectRole, String projectRoleType, String userKey)

public ProjectRole getProjectRole (Long id)

public ProjectRoleActors getProjectRoleActors (Long projectRoleId, Long projectId)

public ProjectRole getProjectRoleByName (String name)

public boolean isGroupUsed (String group)

@EventListener public void onClearCache (ClearCacheEvent event)

public void removeAllRoleActorsByKeyAndType (String key, String type)

public void removeAllRoleActorsByProject (Project project)

public List<Long> roleActorOfTypeExistsForProjects (List<Long> projectsToLimitBy, ProjectRole projectRole, String projectRoleType, String projectRoleParameter)

public void updateDefaultRoleActors (DefaultRoleActors defaultRoleActors)

public void updateProjectRole (ProjectRole projectRole)

public void updateProjectRoleActors (ProjectRoleActors projectRoleActors)