Merge "Add ProjectCache.remove()"

This commit is contained in:
Martin Fick
2012-05-14 08:17:04 -07:00
committed by gerrit code review
3 changed files with 24 additions and 0 deletions

View File

@@ -32,6 +32,12 @@ public interface ProjectCache {
/** Invalidate the cached information about the given project. */
public void evict(Project p);
/**
* Remove information about the given project from the cache. It will no
* longer be returned from {@link #all()}.
*/
void remove(Project p);
/** @return sorted iteration of projects. */
public abstract Iterable<Project.NameKey> all();

View File

@@ -114,6 +114,20 @@ public class ProjectCacheImpl implements ProjectCache {
}
}
@Override
public void remove(final Project p) {
listLock.lock();
try {
SortedSet<Project.NameKey> n = list.get(ListKey.ALL);
n = new TreeSet<Project.NameKey>(n);
n.remove(p.getNameKey());
list.put(ListKey.ALL, Collections.unmodifiableSortedSet(n));
} finally {
listLock.unlock();
}
evict(p);
}
@Override
public void onCreateProject(Project.NameKey newProjectName) {
listLock.lock();