use async cache for scm realm

This commit is contained in:
Sebastian Sdorra
2013-01-31 15:04:03 +01:00
parent 9adc65d9e5
commit 2b4b9ee49e
2 changed files with 21 additions and 23 deletions

View File

@@ -43,11 +43,13 @@ package sonia.scm.util;
public final class GlobUtil public final class GlobUtil
{ {
private GlobUtil() /**
{ * Constructs ...
} *
*/
private GlobUtil() {}
//~--- methods --------------------------------------------------------------
/** /**
* Converts the given glob string to a regular expression string. * Converts the given glob string to a regular expression string.

View File

@@ -38,6 +38,7 @@ package sonia.scm.security;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.Singleton; import com.google.inject.Singleton;
@@ -64,6 +65,7 @@ import sonia.scm.HandlerEvent;
import sonia.scm.cache.Cache; import sonia.scm.cache.Cache;
import sonia.scm.cache.CacheManager; import sonia.scm.cache.CacheManager;
import sonia.scm.config.ScmConfiguration; import sonia.scm.config.ScmConfiguration;
import sonia.scm.event.Subscriber;
import sonia.scm.group.Group; import sonia.scm.group.Group;
import sonia.scm.group.GroupManager; import sonia.scm.group.GroupManager;
import sonia.scm.group.GroupNames; import sonia.scm.group.GroupNames;
@@ -71,13 +73,13 @@ import sonia.scm.repository.Permission;
import sonia.scm.repository.PermissionType; import sonia.scm.repository.PermissionType;
import sonia.scm.repository.Repository; import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryDAO; import sonia.scm.repository.RepositoryDAO;
import sonia.scm.repository.RepositoryListener; import sonia.scm.repository.RepositoryEvent;
import sonia.scm.repository.RepositoryManager; import sonia.scm.repository.RepositoryManager;
import sonia.scm.user.User; import sonia.scm.user.User;
import sonia.scm.user.UserDAO; import sonia.scm.user.UserDAO;
import sonia.scm.user.UserEvent;
import sonia.scm.user.UserEventHack; import sonia.scm.user.UserEventHack;
import sonia.scm.user.UserException; import sonia.scm.user.UserException;
import sonia.scm.user.UserListener;
import sonia.scm.user.UserManager; import sonia.scm.user.UserManager;
import sonia.scm.util.Util; import sonia.scm.util.Util;
import sonia.scm.web.security.AuthenticationManager; import sonia.scm.web.security.AuthenticationManager;
@@ -100,8 +102,8 @@ import javax.servlet.http.HttpServletResponse;
* @author Sebastian Sdorra * @author Sebastian Sdorra
*/ */
@Singleton @Singleton
@Subscriber
public class ScmRealm extends AuthorizingRealm public class ScmRealm extends AuthorizingRealm
implements RepositoryListener, UserListener
{ {
/** Field description */ /** Field description */
@@ -167,10 +169,6 @@ public class ScmRealm extends AuthorizingRealm
// set components // set components
setPermissionResolver(new RepositoryPermissionResolver()); setPermissionResolver(new RepositoryPermissionResolver());
// add listeners for caching
userManager.addListener(this);
repositoryManager.addListener(this);
} }
//~--- methods -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
@@ -179,19 +177,17 @@ public class ScmRealm extends AuthorizingRealm
* Method description * Method description
* *
* *
* @param repository
* @param event * @param event
*/ */
@Override @Subscribe
public void onEvent(Repository repository, HandlerEvent event) public void onEvent(RepositoryEvent event)
{ {
if (event.isPost()) if (event.getEventType().isPost())
{ {
if (logger.isDebugEnabled()) if (logger.isDebugEnabled())
{ {
logger.debug("clear cache, because repository {} has changed", logger.debug("clear cache, because repository {} has changed",
repository.getName()); event.getItem().getName());
} }
cache.clear(); cache.clear();
@@ -202,14 +198,15 @@ public class ScmRealm extends AuthorizingRealm
* Method description * Method description
* *
* *
* @param user
* @param event * @param event
*/ */
@Override @Subscribe
public void onEvent(User user, HandlerEvent event) public void onEvent(UserEvent event)
{ {
if (event.isPost()) if (event.getEventType().isPost())
{ {
User user = event.getItem();
if (logger.isDebugEnabled()) if (logger.isDebugEnabled())
{ {
logger.debug( logger.debug(
@@ -225,7 +222,6 @@ public class ScmRealm extends AuthorizingRealm
* Method description * Method description
* *
* *
* @param token
* *
* @param authToken * @param authToken
* *