com.atlassian.confluence.security
Class CachingSpacePermissionManager

java.lang.Object
  extended bycom.atlassian.confluence.security.AbstractSpacePermissionManager
      extended bycom.atlassian.confluence.security.DefaultSpacePermissionManager
          extended bycom.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.


Field Summary
static String CACHE_KEY
           
 
Fields inherited from class com.atlassian.confluence.security.DefaultSpacePermissionManager
log
 
Fields inherited from class com.atlassian.confluence.security.AbstractSpacePermissionManager
spacePermissionDao
 
Constructor Summary
CachingSpacePermissionManager()
           
 
Method Summary
 void flushCaches()
           
protected  boolean hasPermissionInDao(SpacePermission permission)
          Looks up permission in the cache instance.
 boolean isLookAheadEnabled()
           
protected  void removePermissionFromDao(SpacePermission realPermission)
          Removes realPermission from the DAO.
protected  void savePermissionToDao(SpacePermission permission)
          Saves permission to the DAO.
 void setCacheManager(CacheManager cacheManager)
           
 void setLookAheadEnabled(boolean lookAheadEnabled)
           
 
Methods inherited from class com.atlassian.confluence.security.DefaultSpacePermissionManager
createInitialSpacePermissions, getAllPermissionsForGroup, getGlobalPermissions, getGlobalPermissions, getGroupsForPermissionType, getGroupsWithPermissions, getUsersForPermissionType, getUsersWithPermissions, groupHasPermission, hasPermission, hasPermission, removeAllPermissions, removeAllPermissionsForGroup, removeAllUserPermissions, removePermission, savePermission
 
Methods inherited from class com.atlassian.confluence.security.AbstractSpacePermissionManager
fixPermissions, getUserAccessor, hasPermissionForSpace, setSpacePermissionDao, setUserAccessor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CACHE_KEY

public static final String CACHE_KEY
Constructor Detail

CachingSpacePermissionManager

public CachingSpacePermissionManager()
Method Detail

hasPermissionInDao

protected boolean hasPermissionInDao(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.

Overrides:
hasPermissionInDao 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

setCacheManager

public void setCacheManager(CacheManager cacheManager)

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)


Confluence is developed by Atlassian.