GitwebServlet should not inject LocalDiskRepositoryManager
GitwebServlet was the only class not getting the interface injected. Inject GitRepositoryManager instead and check to make sure the implementation is LocalDiskRepositoryManager since Gitweb can only work with LocalDiskRepositoryManager. Change-Id: Id707069c3d8cd09ce11a0356ea2218d3f9c74166
This commit is contained in:
@@ -42,6 +42,7 @@ import com.google.gerrit.server.config.GerritServerConfig;
|
|||||||
import com.google.gerrit.server.config.GitwebCgiConfig;
|
import com.google.gerrit.server.config.GitwebCgiConfig;
|
||||||
import com.google.gerrit.server.config.GitwebConfig;
|
import com.google.gerrit.server.config.GitwebConfig;
|
||||||
import com.google.gerrit.server.config.SitePaths;
|
import com.google.gerrit.server.config.SitePaths;
|
||||||
|
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||||
import com.google.gerrit.server.git.LocalDiskRepositoryManager;
|
import com.google.gerrit.server.git.LocalDiskRepositoryManager;
|
||||||
import com.google.gerrit.server.project.NoSuchProjectException;
|
import com.google.gerrit.server.project.NoSuchProjectException;
|
||||||
import com.google.gerrit.server.project.ProjectControl;
|
import com.google.gerrit.server.project.ProjectControl;
|
||||||
@@ -49,6 +50,7 @@ import com.google.gerrit.server.ssh.SshInfo;
|
|||||||
import com.google.gwtexpui.server.CacheHeaders;
|
import com.google.gwtexpui.server.CacheHeaders;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
|
import com.google.inject.ProvisionException;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
import org.eclipse.jgit.errors.RepositoryNotFoundException;
|
||||||
@@ -100,7 +102,7 @@ class GitwebServlet extends HttpServlet {
|
|||||||
private final EnvList _env;
|
private final EnvList _env;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
GitwebServlet(LocalDiskRepositoryManager repoManager,
|
GitwebServlet(GitRepositoryManager repoManager,
|
||||||
ProjectControl.Factory projectControl,
|
ProjectControl.Factory projectControl,
|
||||||
Provider<AnonymousUser> anonymousUserProvider,
|
Provider<AnonymousUser> anonymousUserProvider,
|
||||||
Provider<CurrentUser> userProvider,
|
Provider<CurrentUser> userProvider,
|
||||||
@@ -110,7 +112,11 @@ class GitwebServlet extends HttpServlet {
|
|||||||
GitwebConfig gitwebConfig,
|
GitwebConfig gitwebConfig,
|
||||||
GitwebCgiConfig gitwebCgiConfig)
|
GitwebCgiConfig gitwebCgiConfig)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
this.repoManager = repoManager;
|
if (!(repoManager instanceof LocalDiskRepositoryManager)) {
|
||||||
|
throw new ProvisionException(
|
||||||
|
"Gitweb can only be used with LocalDiskRepositoryManager");
|
||||||
|
}
|
||||||
|
this.repoManager = (LocalDiskRepositoryManager)repoManager;
|
||||||
this.projectControl = projectControl;
|
this.projectControl = projectControl;
|
||||||
this.anonymousUserProvider = anonymousUserProvider;
|
this.anonymousUserProvider = anonymousUserProvider;
|
||||||
this.userProvider = userProvider;
|
this.userProvider = userProvider;
|
||||||
|
@@ -35,8 +35,6 @@ public class MultiBaseLocalDiskRepositoryManager extends
|
|||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(GitRepositoryManager.class).to(
|
bind(GitRepositoryManager.class).to(
|
||||||
MultiBaseLocalDiskRepositoryManager.class);
|
MultiBaseLocalDiskRepositoryManager.class);
|
||||||
bind(LocalDiskRepositoryManager.class).to(
|
|
||||||
MultiBaseLocalDiskRepositoryManager.class);
|
|
||||||
listener().to(MultiBaseLocalDiskRepositoryManager.Lifecycle.class);
|
listener().to(MultiBaseLocalDiskRepositoryManager.Lifecycle.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user