mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-07 05:55:44 +01:00
Move cache event to central position
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user