blob: 4cbd3d20ef2451c9891e43cb4067a18d1a2bb218 [file] [log] [blame]
package com.googlesource.gerrit.plugins.its.base.workflow;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.common.ProjectInfo;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ItsRulesProjectCacheRefresher implements GitReferenceUpdatedListener {
private static final Logger log = LoggerFactory.getLogger(ItsRulesProjectCacheRefresher.class);
private final GerritApi gApi;
private final ItsRulesProjectCache itsRuleProjectCache;
@Inject
ItsRulesProjectCacheRefresher(GerritApi gApi, ItsRulesProjectCache itsRuleProjectCache) {
this.gApi = gApi;
this.itsRuleProjectCache = itsRuleProjectCache;
}
@Override
public void onGitReferenceUpdated(Event event) {
if (!event.getRefName().equals(RefNames.REFS_CONFIG)) {
return;
}
String projectName = event.getProjectName();
itsRuleProjectCache.evict(projectName);
try {
for (ProjectInfo childProject : gApi.projects().name(projectName).children()) {
itsRuleProjectCache.evict(childProject.name);
}
} catch (RestApiException e) {
log.warn("Unable to evict ITS rules cache", e);
}
}
}