Class CoarseGrainedCachingSpacePermissionManager
- java.lang.Object
-
- com.atlassian.confluence.impl.security.AbstractSpacePermissionManager
-
- com.atlassian.confluence.impl.security.CoarseGrainedCachingSpacePermissionManager
-
- All Implemented Interfaces:
SpacePermissionManagerInternal,SpacePermissionSaverInternal,DefaultConfluenceAccessManager.AccessManagerPermissionChecker,SpacePermissionManager,SpacePermissionSaver
- Direct Known Subclasses:
RecoveryAwareCGCachingSpacePermissionManager
public class CoarseGrainedCachingSpacePermissionManager extends AbstractSpacePermissionManager
Space permission manager that caches all permissions for each space.Whenever there is a cache miss, all permissions for the current space (can be global) are fetched in one go and cached as one block. Entries can be primed before they are needed and the entries will never expire. Any permission changes will invalidate the cache entry for the affected space.
- Since:
- 5.9
- See Also:
SpacePermissionCachePrimer
-
-
Field Summary
Fields Modifier and Type Field Description protected SpacePermissionDaospacePermissionDao
-
Constructor Summary
Constructors Constructor Description CoarseGrainedCachingSpacePermissionManager(PermissionCheckExemptions permissionCheckExemptions, com.atlassian.cache.CacheFactory cacheFactory, SpacePermissionManagerInternal delegate, SpacePermissionDao spacePermissionDao, com.atlassian.event.api.EventPublisher eventPublisher, ConfluenceAccessManager confluenceAccessManager, SpacePermissionAccessMapper spacePermissionAccessMapper, com.atlassian.crowd.embedded.api.CrowdService crowdService, AccessModeManager accessModeManager, ScopesRequestCacheDelegate scopesRequestCacheDelegate, GlobalSettingsManager settingsManager)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidcreateDefaultSpacePermissions(Space space)voidcreatePrivateSpacePermissions(Space space)voidflushCaches()List<SpacePermission>getAllPermissionsForGroup(String group)List<SpacePermission>getGlobalPermissions()List<SpacePermission>getGlobalPermissions(String permissionType)protected Iterable<String>getGroupNamesWithPermission(@Nullable Space targetSpace, String permissionType)Map<String,Long>getGroupsForPermissionType(String permissionType, Space space)Collection<com.atlassian.user.Group>getGroupsWithPermissions(@Nullable Space space)Returns all groups which have permissions in a space or on a global level.Map<String,Long>getUsersForPermissionType(String permissionType, Space space)Collection<com.atlassian.user.User>getUsersWithPermissions(@Nullable Space space)Returns a collection of user objects with VIEWSPACE_PERMISSION in the space.booleanpermissionExists(SpacePermission permission)Check whether the given SpacePermission exists.voidprime(Iterable<? extends Space> spaces)voidremoveAllPermissions(Space space)Deprecated.since 5.9.voidremoveAllPermissions(Space space, SpacePermissionContext context)Removes all permissions belonging to spacevoidremoveAllPermissionsForGroup(String group)Deprecated.since 5.8.voidremoveAllPermissionsForGroup(String group, SpacePermissionContext context)Removes all permissions for the given group.voidremoveAllUserPermissions(ConfluenceUser user)Deprecated.since 5.9.voidremoveAllUserPermissions(ConfluenceUser user, SpacePermissionContext context)Removes all permissions for the given user.voidremoveGlobalPermissionForUser(ConfluenceUser user, String permissionType)Deprecated.since 5.9.voidremoveGlobalPermissionForUser(ConfluenceUser user, String permissionType, SpacePermissionContext context)Removes global permission of specified type that is directly associated with a user.voidremovePermission(SpacePermission permission)Deprecated.since 5.9.voidremovePermission(SpacePermission permission, SpacePermissionContext context)Removes the given permission.voidsavePermission(SpacePermission permission)Deprecated.since 5.9.voidsavePermission(SpacePermission permission, SpacePermissionContext context)Saves the permission.-
Methods inherited from class com.atlassian.confluence.impl.security.AbstractSpacePermissionManager
getDefaultGlobalPermissions, groupHasPermission, hasAllPermissions, hasGlobalPermissionViaGroups, hasPermission, hasPermissionForSpace, hasPermissionNoExemptions, isPermittedInReadOnlyAccessMode
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.atlassian.confluence.security.SpacePermissionManager
getDefaultGlobalPermissions, groupHasPermission, hasAllPermissions, hasPermission, hasPermissionForSpace, hasPermissionNoExemptions, isPermittedInReadOnlyAccessMode
-
-
-
-
Field Detail
-
spacePermissionDao
protected final SpacePermissionDao spacePermissionDao
-
-
Constructor Detail
-
CoarseGrainedCachingSpacePermissionManager
public CoarseGrainedCachingSpacePermissionManager(PermissionCheckExemptions permissionCheckExemptions, com.atlassian.cache.CacheFactory cacheFactory, SpacePermissionManagerInternal delegate, SpacePermissionDao spacePermissionDao, com.atlassian.event.api.EventPublisher eventPublisher, ConfluenceAccessManager confluenceAccessManager, SpacePermissionAccessMapper spacePermissionAccessMapper, com.atlassian.crowd.embedded.api.CrowdService crowdService, AccessModeManager accessModeManager, ScopesRequestCacheDelegate scopesRequestCacheDelegate, GlobalSettingsManager settingsManager)
- Since:
- 7.5
-
-
Method Detail
-
removeAllPermissions
@Deprecated public void removeAllPermissions(Space space)
Deprecated.Description copied from interface:SpacePermissionManagerRemoves all permissions belonging to space- Specified by:
removeAllPermissionsin interfaceSpacePermissionManager- Parameters:
space- The space to remove the permissions for
-
removeAllPermissions
public void removeAllPermissions(Space space, SpacePermissionContext context)
Description copied from interface:SpacePermissionManagerInternalRemoves all permissions belonging to space- Specified by:
removeAllPermissionsin interfaceSpacePermissionManagerInternal- Parameters:
space- The space to remove the permissions forcontext- The context for this removal
-
removePermission
@Deprecated public void removePermission(SpacePermission permission)
Deprecated.Description copied from interface:SpacePermissionManagerRemoves the given permission, and generates aSpacePermissionRemoveEventin the process.- Specified by:
removePermissionin interfaceSpacePermissionManager- Parameters:
permission- the permission to remove
-
removePermission
public void removePermission(SpacePermission permission, SpacePermissionContext context)
Description copied from interface:SpacePermissionManagerInternalRemoves the given permission.May generate a
SpacePermissionRemoveEventin the process, depending on the context.- Specified by:
removePermissionin interfaceSpacePermissionManagerInternal- Parameters:
permission- the permission to removecontext- the context for the removal
-
removeAllUserPermissions
@Deprecated public void removeAllUserPermissions(ConfluenceUser user)
Deprecated.Description copied from interface:SpacePermissionManagerRemoves all permissions for the given user, and generates aSpacePermissionsRemoveForUserEventin the process.- Specified by:
removeAllUserPermissionsin interfaceSpacePermissionManager
-
removeAllUserPermissions
public void removeAllUserPermissions(ConfluenceUser user, SpacePermissionContext context)
Description copied from interface:SpacePermissionManagerInternalRemoves all permissions for the given user.May generate a
SpacePermissionsRemoveForUserEventin the process, depending on the context.- Specified by:
removeAllUserPermissionsin interfaceSpacePermissionManagerInternal- Parameters:
user- the user to remove permissions forcontext- the context for the removal
-
removeGlobalPermissionForUser
@Deprecated public void removeGlobalPermissionForUser(ConfluenceUser user, String permissionType)
Deprecated.Description copied from interface:SpacePermissionManagerRemoves global permission of specified type that is directly associated with a user, and generates aSpacePermissionsRemoveForUserEventin the process.- Specified by:
removeGlobalPermissionForUserin interfaceSpacePermissionManager- Parameters:
user- the user to look uppermissionType- the permission type to remove
-
removeGlobalPermissionForUser
public void removeGlobalPermissionForUser(ConfluenceUser user, String permissionType, SpacePermissionContext context)
Description copied from interface:SpacePermissionManagerInternalRemoves global permission of specified type that is directly associated with a user.May generate a
SpacePermissionsRemoveForUserEventin the process, depending on the context.- Specified by:
removeGlobalPermissionForUserin interfaceSpacePermissionManagerInternal- Parameters:
user- the user to look uppermissionType- the permission type to removecontext- the context for the removal
-
removeAllPermissionsForGroup
@Deprecated public void removeAllPermissionsForGroup(String group)
Deprecated.Description copied from interface:SpacePermissionManagerRemoves all permissions for the given group, and generates aSpacePermissionsRemoveForGroupEventin the process.- Specified by:
removeAllPermissionsForGroupin interfaceSpacePermissionManager- Parameters:
group- the group to remove
-
removeAllPermissionsForGroup
public void removeAllPermissionsForGroup(String group, SpacePermissionContext context)
Description copied from interface:SpacePermissionManagerInternalRemoves all permissions for the given group.May generate a
SpacePermissionsRemoveForGroupEventin the process, depending on the context.- Specified by:
removeAllPermissionsForGroupin interfaceSpacePermissionManagerInternal- Parameters:
group- the group to remove
-
getAllPermissionsForGroup
public List<SpacePermission> getAllPermissionsForGroup(String group)
- Specified by:
getAllPermissionsForGroupin interfaceSpacePermissionManager
-
getGlobalPermissions
public List<SpacePermission> getGlobalPermissions()
- Specified by:
getGlobalPermissionsin interfaceSpacePermissionManager
-
getGlobalPermissions
public List<SpacePermission> getGlobalPermissions(String permissionType)
- Specified by:
getGlobalPermissionsin interfaceSpacePermissionManager
-
flushCaches
public void flushCaches()
- Specified by:
flushCachesin interfaceSpacePermissionManager
-
createDefaultSpacePermissions
public void createDefaultSpacePermissions(Space space)
- Specified by:
createDefaultSpacePermissionsin interfaceSpacePermissionManager
-
createPrivateSpacePermissions
public void createPrivateSpacePermissions(Space space)
- Specified by:
createPrivateSpacePermissionsin interfaceSpacePermissionManager
-
getGroupsWithPermissions
public Collection<com.atlassian.user.Group> getGroupsWithPermissions(@Nullable Space space)
Description copied from interface:SpacePermissionManagerReturns all groups which have permissions in a space or on a global level. If space is null, permissions on the global level will be checked.- Specified by:
getGroupsWithPermissionsin interfaceSpacePermissionManager- Parameters:
space- - space to query, if null global permissions returned- Returns:
- Collection of groups with permissions
-
getGroupsForPermissionType
public Map<String,Long> getGroupsForPermissionType(String permissionType, Space space)
- Specified by:
getGroupsForPermissionTypein interfaceSpacePermissionManager
-
getUsersWithPermissions
public Collection<com.atlassian.user.User> getUsersWithPermissions(@Nullable Space space)
Description copied from interface:SpacePermissionManagerReturns a collection of user objects with VIEWSPACE_PERMISSION in the space. If no space is provided A list of users with USE_CONFLUENCE_PERMISSION will be returned- Specified by:
getUsersWithPermissionsin interfaceSpacePermissionManager- Parameters:
space- - space to query, if null global permissions returned- Returns:
- Collection of User objects
-
getUsersForPermissionType
public Map<String,Long> getUsersForPermissionType(String permissionType, Space space)
- Specified by:
getUsersForPermissionTypein interfaceSpacePermissionManager
-
getGroupNamesWithPermission
protected Iterable<String> getGroupNamesWithPermission(@Nullable Space targetSpace, String permissionType)
- Specified by:
getGroupNamesWithPermissionin classAbstractSpacePermissionManager
-
permissionExists
public boolean permissionExists(SpacePermission permission)
Description copied from interface:SpacePermissionManagerCheck whether the given SpacePermission exists. Checks by attribute equality rather than by id.- Specified by:
permissionExistsin interfaceDefaultConfluenceAccessManager.AccessManagerPermissionChecker- Specified by:
permissionExistsin interfaceSpacePermissionManager- Parameters:
permission- the permission to look for.- Returns:
- true if the permission is recognised by the manager as existing.
-
savePermission
@Deprecated public void savePermission(SpacePermission permission)
Deprecated.Description copied from interface:SpacePermissionSaverSaves the permission, and generates aSpacePermissionSaveEventin the process.- Specified by:
savePermissionin interfaceSpacePermissionSaver
-
savePermission
public void savePermission(SpacePermission permission, SpacePermissionContext context)
Description copied from interface:SpacePermissionSaverInternalSaves the permission.May generate a
SpacePermissionSaveEventin the process, depending on the context.- Specified by:
savePermissionin interfaceSpacePermissionSaverInternal- Parameters:
permission- the permission to savecontext- the context for the save
-
-