Partially revert making GerritRemoteReader injectable
For a cross-host implementation, it is enough to wrap
GitRepositoryManager, no need to expose GerritRemoteReader.
Making GerritRemoteReader static still make sense and will help later to
plug a different repository manager.
Change-Id: I63417c12c8e8d8043f52dbaa4661c5028f43925d
diff --git a/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestModule.java b/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestModule.java
index b1666ac..33aa1dd 100644
--- a/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestModule.java
+++ b/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestModule.java
@@ -33,8 +33,6 @@
DynamicSet.bind(binder(), LifecycleListener.class)
.to(SuperManifestRefUpdatedListener.class)
.in(SINGLETON);
- bind(SuperManifestRefUpdatedListener.GerritRemoteReader.class)
- .to(SuperManifestRefUpdatedListener.GerritRemoteReaderImpl.class);
post(BRANCH_KIND, "update_manifest").to(SuperManifestRefUpdatedListener.class).in(SINGLETON);
}
}
diff --git a/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java b/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java
index 8134e14..c8f7895 100644
--- a/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java
+++ b/java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java
@@ -43,7 +43,6 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
-import java.io.Closeable;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -82,7 +81,7 @@
RestModifyView<BranchResource, BranchInput> {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
- private final Provider<GerritRemoteReader> remoteReaderProvider;
+ private final GitRepositoryManager repoManager;
private final URI canonicalWebUrl;
private final PluginConfigFactory cfgFactory;
private final String pluginName;
@@ -105,14 +104,14 @@
PluginConfigFactory cfgFactory,
ProjectCache projectCache,
@GerritPersonIdent Provider<PersonIdent> serverIdent,
- Provider<GerritRemoteReader> remoteReaderProvider,
+ GitRepositoryManager repoManager,
Provider<IdentifiedUser> identifiedUser,
PermissionBackend permissionBackend) {
this.pluginName = pluginName;
this.serverIdent = serverIdent;
this.allProjectsName = allProjectsName;
- this.remoteReaderProvider = remoteReaderProvider;
+ this.repoManager = repoManager;
try {
this.canonicalWebUrl = new URI(canonicalWebUrl);
} catch (URISyntaxException e) {
@@ -331,7 +330,8 @@
throw new ConfigInvalidException(
String.format("invalid toolType: %s", c.getToolType().name()));
}
- try (GerritRemoteReader reader = remoteReaderProvider.get()) {
+ try (GerritRemoteReader reader =
+ new GerritRemoteReader(repoManager, canonicalWebUrl.toString())) {
subModuleUpdater.update(reader, c, refName);
}
}
@@ -354,26 +354,14 @@
return trimmed.toArray(new StackTraceElement[trimmed.size()]);
}
- interface GerritRemoteReader extends RepoCommand.RemoteReader, Closeable {
- /**
- * @param name repository name relative to current host (e.g. "submodule" for
- * "gerrit.googlesource.com/submodule")
- * @return the open repository. The reader keeps it cached, so the caller MUST not close it.
- * @throws IOException error opening the repo.
- */
- Repository openRepository(String name) throws IOException;
- }
-
// GerritRemoteReader is for injecting Gerrit's Git implementation into JGit.
- static class GerritRemoteReaderImpl implements GerritRemoteReader {
+ static class GerritRemoteReader implements RepoCommand.RemoteReader, AutoCloseable {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final Map<String, Repository> repos;
private final GitRepositoryManager repoManager;
private final URI canonicalWebUrl;
- @Inject
- GerritRemoteReaderImpl(
- GitRepositoryManager repoManager, @CanonicalWebUrl String canonicalWebUrl) {
+ GerritRemoteReader(GitRepositoryManager repoManager, @CanonicalWebUrl String canonicalWebUrl) {
this.repos = new HashMap<>();
this.repoManager = repoManager;
try {
@@ -445,7 +433,6 @@
tw.getFileMode(0));
}
- @Override
public Repository openRepository(String name) throws IOException {
name = urlToRepoKey(canonicalWebUrl, name);
if (repos.containsKey(name)) {