Move cache event to central position

This commit is contained in:
René Pfeuffer
2018-12-12 18:49:38 +01:00
parent dbbe467479
commit db092e57e7
2 changed files with 29 additions and 9 deletions

View File

@@ -2,14 +2,11 @@ package sonia.scm.api.v2.resources;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.event.ScmEventBus;
import sonia.scm.repository.ClearRepositoryCacheEvent;
import sonia.scm.repository.GitRepositoryConfig;
import sonia.scm.repository.NamespaceAndName;
import sonia.scm.repository.Repository;
import sonia.scm.repository.RepositoryManager;
import sonia.scm.store.ConfigurationStore;
import sonia.scm.store.ConfigurationStoreFactory;
import sonia.scm.web.GitVndMediaType;
import javax.inject.Inject;
@@ -62,14 +59,9 @@ public class GitRepositoryConfigResource {
GitRepositoryConfig config = repositoryConfigMapper.map(dto);
repositoryConfigStore.set(config);
LOG.info("git default branch of repository {} has changed, sending clear cache event", repository.getNamespaceAndName());
sendClearRepositoryCacheEvent(repository);
return Response.noContent().build();
}
private void sendClearRepositoryCacheEvent(Repository repository) {
ScmEventBus.getInstance().post(new ClearRepositoryCacheEvent(repository));
}
private Repository getRepository(@PathParam("namespace") String namespace, @PathParam("name") String name) {
NamespaceAndName namespaceAndName = new NamespaceAndName(namespace, name);
Repository repository = repositoryManager.get(namespaceAndName);

View File

@@ -1,5 +1,7 @@
package sonia.scm.api.v2.resources;
import sonia.scm.event.ScmEventBus;
import sonia.scm.repository.ClearRepositoryCacheEvent;
import sonia.scm.repository.GitRepositoryConfig;
import sonia.scm.repository.Repository;
import sonia.scm.store.ConfigurationStore;
@@ -17,6 +19,32 @@ public class GitRepositoryConfigStoreProvider {
}
public ConfigurationStore<GitRepositoryConfig> get(Repository repository) {
return configurationStoreFactory.withType(GitRepositoryConfig.class).withName("gitConfig").forRepository(repository).build();
return new StoreWrapper(configurationStoreFactory.withType(GitRepositoryConfig.class).withName("gitConfig").forRepository(repository).build(), repository);
}
private static class StoreWrapper implements ConfigurationStore<GitRepositoryConfig> {
private final ConfigurationStore<GitRepositoryConfig> delegate;
private final Repository repository;
private StoreWrapper(ConfigurationStore<GitRepositoryConfig> delegate, Repository repository) {
this.delegate = delegate;
this.repository = repository;
}
@Override
public GitRepositoryConfig get() {
return delegate.get();
}
@Override
public void set(GitRepositoryConfig object) {
delegate.set(object);
sendClearRepositoryCacheEvent();
}
private void sendClearRepositoryCacheEvent() {
ScmEventBus.getInstance().post(new ClearRepositoryCacheEvent(repository));
}
}
}