improve cache invalidation on permission change events

This commit is contained in:
Sebastian Sdorra
2016-06-26 12:53:41 +02:00
parent 7bc793ecd5
commit 89660e8ac3
2 changed files with 31 additions and 7 deletions

View File

@@ -184,7 +184,7 @@ public class AuthorizationCollector
}
private void invalidateUserCache(final String username){
logger.debug("invalidate cache of user {}, because user properties have changed", username);
logger.debug("invalidate cache of user {}, because of a event which could change the permissions", username);
cache.removeAll(new Filter<CacheKey>()
{
@Override
@@ -248,10 +248,11 @@ public class AuthorizationCollector
}
/**
* Method description
* Invalidates the whole cache if a group permission has changed and invalidates the cached entries of a user, if a
* user permission has changed.
*
*
* @param event
* @param event permission event
*/
@Subscribe
public void onEvent(StoredAssignedPermissionEvent event)
@@ -264,7 +265,16 @@ public class AuthorizationCollector
event.getPermission().getId());
}
cache.clear();
StoredAssignedPermission permission = event.getPermission();
if (permission.isGroupPermission())
{
logger.debug("clears the whole cache, because global group permission {} has changed", permission.getId());
cache.clear();
}
else
{
invalidateUserCache(permission.getName());
}
}
}