com.atlassian.confluence.security
Class CachingSpacePermissionManager
java.lang.Object
com.atlassian.confluence.security.AbstractSpacePermissionManager
com.atlassian.confluence.security.DefaultSpacePermissionManager
com.atlassian.confluence.security.CachingSpacePermissionManager
- All Implemented Interfaces:
- SpacePermissionManager
public class CachingSpacePermissionManager
- extends DefaultSpacePermissionManager
Implementation of SpacePermissionManager that implements caching before a SpacePermission is requested,
saved or removed from the SpacePermissionDao. This is designed to increase performance and reduce the
amount of hits on the database.
Methods inherited from class com.atlassian.confluence.security.DefaultSpacePermissionManager |
createInitialSpacePermissions, getAllPermissionsForGroup, getAllPermissionsForUser, getGlobalPermissions, getGlobalPermissions, getGroupsForPermissionType, getGroupsWithPermissions, getUsersForPermissionType, getUsersWithPermissions, groupHasPermission, hasPermission, removeAllPermissionsForGroup, removeAllUserPermissions, removePermission, removePermissions, savePermission |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CACHE_KEY
public static final String CACHE_KEY
CachingSpacePermissionManager
public CachingSpacePermissionManager()
permissionExists
public boolean permissionExists(SpacePermission permission)
- Looks up permission in the cache instance. If it is not found,
then it is looked up by the DAO and the result (true or false)
is also recorded.
If permission belongs to a space, it is looked up in the Space's own
permissions list.
In addition, when lookAheadEnabled is true, #doLookAheadCache will
be called and the results cached, provided permission does not belong
to a space.
- Specified by:
permissionExists
in interface SpacePermissionManager
- Overrides:
permissionExists
in class DefaultSpacePermissionManager
- Parameters:
permission
- the SpacePermission to look up
- Returns:
- true if the permission exists, false otherwise
savePermissionToDao
protected void savePermissionToDao(SpacePermission permission)
- Saves permission to the DAO. In addition, this method removes
the permission from the cache, to prevent corruption of the cache
when there is a transaction rollback (since the cache isn't transactional)
- Overrides:
savePermissionToDao
in class DefaultSpacePermissionManager
- Parameters:
permission
- the SpacePermission to save
removePermissionFromDao
protected void removePermissionFromDao(SpacePermission realPermission)
- Removes realPermission from the DAO. In addition, the permission is
also removed from the cache.
- Overrides:
removePermissionFromDao
in class DefaultSpacePermissionManager
- Parameters:
realPermission
- the SpacePermission to remove
removeAllPermissions
public void removeAllPermissions(Space space)
- Description copied from interface:
SpacePermissionManager
- Removes all permissions belonging to space
- Specified by:
removeAllPermissions
in interface SpacePermissionManager
- Overrides:
removeAllPermissions
in class DefaultSpacePermissionManager
- Parameters:
space
- The space to remove the permissions for
setCacheFactory
public void setCacheFactory(com.atlassian.cache.CacheFactory cacheFactory)
flushCaches
public void flushCaches()
- Specified by:
flushCaches
in interface SpacePermissionManager
- Overrides:
flushCaches
in class DefaultSpacePermissionManager
isLookAheadEnabled
public boolean isLookAheadEnabled()
setLookAheadEnabled
public void setLookAheadEnabled(boolean lookAheadEnabled)
hasPermission
public boolean hasPermission(String permissionType,
Space space,
User remoteUser)
- Description copied from interface:
SpacePermissionManager
- Determines if remoteUser has the given permission in space
- Specified by:
hasPermission
in interface SpacePermissionManager
- Overrides:
hasPermission
in class DefaultSpacePermissionManager
- Parameters:
permissionType
- The permission type to look upspace
- The space the permission applies to (can be null for global permissions)remoteUser
- The user to look up (can be null for the anonymous user)
- Returns:
- true if remoteUser has the permission, false otherwise
canUseConfluence
protected boolean canUseConfluence(User remoteUser,
String permissionCheck)
- Overrides:
canUseConfluence
in class DefaultSpacePermissionManager