Merge "Evict project in user cache on save of project meta data"

This commit is contained in:
Martin Fick
2011-11-07 13:16:49 -08:00
committed by gerrit code review
2 changed files with 12 additions and 5 deletions

View File

@@ -21,11 +21,12 @@ import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.project.NoSuchProjectException;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.PerRequestProjectControlCache;
import com.google.gerrit.server.project.ProjectControl;
import com.google.gwtorm.client.OrmConcurrencyException;
import com.google.gwtorm.client.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.assistedinject.Assisted;
import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -40,9 +41,9 @@ class ChangeProjectSettings extends Handler<ProjectDetail> {
private final ProjectDetailFactory.Factory projectDetailFactory;
private final ProjectControl.Factory projectControlFactory;
private final ProjectCache projectCache;
private final GitRepositoryManager mgr;
private final MetaDataUpdate.User metaDataUpdateFactory;
private final Provider<PerRequestProjectControlCache> userCache;
private final Project update;
@@ -50,13 +51,14 @@ class ChangeProjectSettings extends Handler<ProjectDetail> {
ChangeProjectSettings(
final ProjectDetailFactory.Factory projectDetailFactory,
final ProjectControl.Factory projectControlFactory,
final ProjectCache projectCache, final GitRepositoryManager mgr,
final GitRepositoryManager mgr,
final MetaDataUpdate.User metaDataUpdateFactory,
final Provider<PerRequestProjectControlCache> uc,
@Assisted final Project update) {
this.projectDetailFactory = projectDetailFactory;
this.projectControlFactory = projectControlFactory;
this.projectCache = projectCache;
this.mgr = mgr;
this.userCache = uc;
this.metaDataUpdateFactory = metaDataUpdateFactory;
this.update = update;
@@ -83,7 +85,7 @@ class ChangeProjectSettings extends Handler<ProjectDetail> {
md.setMessage("Modified project settings\n");
if (config.commit(md)) {
mgr.setProjectDescription(projectName, update.getDescription());
projectCache.evict(config.getProject());
userCache.get().evict(config.getProject());
} else {
throw new OrmConcurrencyException("Cannot update " + projectName);
}

View File

@@ -49,4 +49,9 @@ public class PerRequestProjectControlCache {
}
return ctl;
}
public void evict(Project project) {
projectCache.evict(project);
controls.remove(project.getNameKey());
}
}