fix repository caching bug

This commit is contained in:
Sebastian Sdorra
2010-10-16 00:01:21 +02:00
parent 5c0caafd32
commit fd86fd5d76
5 changed files with 125 additions and 16 deletions

View File

@@ -10,12 +10,16 @@ package sonia.scm.cache;
//~--- non-JDK imports --------------------------------------------------------
import com.google.inject.Inject;
import com.google.inject.name.Named;
import sonia.scm.ConfigChangedListener;
import sonia.scm.SCMContextProvider;
import sonia.scm.Undecorated;
import sonia.scm.repository.AbstractRepositoryManagerDecorator;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryException;
import sonia.scm.repository.RepositoryHandler;
import sonia.scm.repository.RepositoryManager;
import sonia.scm.repository.RepositoryType;
import sonia.scm.util.AssertUtil;
import sonia.scm.util.Util;
@@ -24,7 +28,6 @@ import sonia.scm.util.Util;
import java.io.IOException;
import java.util.Collection;
import sonia.scm.Undecorated;
/**
*
@@ -32,6 +35,7 @@ import sonia.scm.Undecorated;
*/
public class CacheRepositoryManagerDecorator
extends AbstractRepositoryManagerDecorator
implements ConfigChangedListener
{
/** Field description */
@@ -51,8 +55,7 @@ public class CacheRepositoryManagerDecorator
*/
@Inject
public CacheRepositoryManagerDecorator(
@Undecorated RepositoryManager manager,
CacheManager cacheManager)
@Undecorated RepositoryManager manager, CacheManager cacheManager)
{
super(manager);
cache = cacheManager.getExtendedCache(String.class, Repository.class,
@@ -61,6 +64,31 @@ public class CacheRepositoryManagerDecorator
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @param handler
*/
@Override
public void addHandler(RepositoryHandler handler)
{
super.addHandler(handler);
handler.addListener(this);
}
/**
* Method description
*
*
* @param config
*/
@Override
public void configChanged(Object config)
{
cache.clear();
}
/**
* Method description
*
@@ -95,6 +123,23 @@ public class CacheRepositoryManagerDecorator
removeFromCache(repository);
}
/**
* Method description
*
*
* @param context
*/
@Override
public void init(SCMContextProvider context)
{
super.init(context);
for (RepositoryType type : getTypes())
{
getHandler(type.getName()).addListener(this);
}
}
/**
* Method description
*