ScopedProvider is now more similar to standard Guice's Provider By hiding the HttpServletRequest inside the HttpSessionProvider, the ScopedProvider<T> can be now 100% compatible with the standard Guice's Provider<T> interface. Moving as well from constructor injection to field injection so that the concrete implementation do not have to replicate the constructor injection definition. Code is more compact and extensible. The ability to get an instance by passing an actual HttpServletRequest is kept in order to allow the standard servlet filter (outside the Guice domain) to retrieve the object in the current session, without having to request a Provider<HttpServletRequest> which would fail. Change-Id: I20f32fc42ca05e9a4a140b64a1d5693d83ecf125
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java index da86a02..ccb04b3 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
@@ -17,8 +17,6 @@ import java.io.IOException; import java.util.Arrays; import java.util.HashSet; -import java.util.List; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -46,15 +44,10 @@ @Singleton public static class Provider extends HttpSessionProvider<GitHubLogin> { - @Inject - public Provider(com.google.inject.Provider<GitHubLogin> provider) { - super(provider); - } - @Override - public GitHubLogin get(HttpServletRequest req) { - GitHubLogin login = super.get(req); - login.initOAuthCookie(req); + public GitHubLogin get(HttpServletRequest request) { + GitHubLogin login = super.get(request); + login.initOAuthCookie(request); return login; } }
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/HttpSessionProvider.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/HttpSessionProvider.java index 13cc038..649bd6d 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/HttpSessionProvider.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/HttpSessionProvider.java
@@ -18,14 +18,18 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.google.inject.Singleton; public abstract class HttpSessionProvider<T> implements ScopedProvider<T> { - private final Provider<T> provider; + @Inject + private Provider<T> provider; - public HttpSessionProvider(Provider<T> provider) { - this.provider = provider; + @Inject + private Provider<HttpServletRequest> httpRequestProvider; + + @Override + public T get() { + return get(httpRequestProvider.get()); } @Override @@ -43,4 +47,9 @@ return instance; } } + + @Override + public HttpServletRequest getScopedRequest() { + return httpRequestProvider.get(); + } }
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java index fa604db..7f6e3e6 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthFilter.java
@@ -84,7 +84,7 @@ Cookie gerritCookie = getGerritCookie(httpRequest); try { - GitHubLogin ghLogin = loginProvider.get((HttpServletRequest) request); + GitHubLogin ghLogin = loginProvider.get(httpRequest); OAuthCookie authCookie = getOAuthCookie(httpRequest, (HttpServletResponse) response);
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/ScopedProvider.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/ScopedProvider.java index b1f408c..8ebde44 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/ScopedProvider.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/ScopedProvider.java
@@ -15,6 +15,11 @@ import javax.servlet.http.HttpServletRequest; -public interface ScopedProvider<T> { - T get(HttpServletRequest req); +import com.google.inject.Provider; + + +public interface ScopedProvider<T> extends Provider<T>{ + T get(HttpServletRequest request); + + HttpServletRequest getScopedRequest(); }
diff --git a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitHubRepository.java b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitHubRepository.java index 8fcb821..f272630 100644 --- a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitHubRepository.java +++ b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitHubRepository.java
@@ -13,8 +13,6 @@ // limitations under the License. package com.googlesrouce.gerrit.plugins.github.git; -import javax.servlet.http.HttpServletRequest; - import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import com.googlesource.gerrit.plugins.github.GitHubURL; @@ -48,13 +46,13 @@ @Inject - public GitHubRepository(ScopedProvider<GitHubLogin> ghLoginProvider, HttpServletRequest httpRequest, + public GitHubRepository(ScopedProvider<GitHubLogin> ghLoginProvider, @GitHubURL String gitHubUrl, @Assisted("organisation") String organisation, @Assisted("repository") String repository) { this.cloneUrl = gitHubUrl + "/" + organisation + "/" + repository + ".git"; this.organisation = organisation; this.repository = repository; - this.ghLogin = ghLoginProvider.get(httpRequest); + this.ghLogin = ghLoginProvider.get(); } }
diff --git a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitImporter.java b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitImporter.java index c06bb96..d0671fb 100644 --- a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitImporter.java +++ b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/GitImporter.java
@@ -24,12 +24,7 @@ public class GitImporter extends BatchImporter { @Singleton - public static class Provider extends HttpSessionProvider<GitImporter> { - @Inject - public Provider(com.google.inject.Provider<GitImporter> provider) { - super(provider); - } - } + public static class Provider extends HttpSessionProvider<GitImporter> {} private static final Logger log = LoggerFactory.getLogger(GitImporter.class); private final GitCloneStep.Factory cloneFactory;
diff --git a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/PullRequestImportJob.java b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/PullRequestImportJob.java index 494a80b..a3de221 100644 --- a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/PullRequestImportJob.java +++ b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/PullRequestImportJob.java
@@ -14,19 +14,13 @@ package com.googlesrouce.gerrit.plugins.github.git; import java.io.IOException; -import java.net.URL; import java.util.List; -import javax.servlet.http.HttpServletRequest; - import org.eclipse.jgit.api.FetchCommand; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.InvalidRemoteException; -import org.eclipse.jgit.api.errors.NoHeadException; import org.eclipse.jgit.api.errors.TransportException; -import org.eclipse.jgit.errors.IncorrectObjectTypeException; -import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.lib.Repository; @@ -36,7 +30,6 @@ import org.eclipse.jgit.transport.RefSpec; import org.kohsuke.github.GHPullRequest; import org.kohsuke.github.GHPullRequestCommitDetail; -import org.kohsuke.github.GHPullRequestCommitDetail.Authorship; import org.kohsuke.github.GHRepository; import org.kohsuke.github.GHUser; import org.kohsuke.github.GitUser; @@ -44,7 +37,6 @@ import org.slf4j.LoggerFactory; import com.google.common.collect.Lists; -import com.google.gerrit.common.errors.EmailException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; @@ -53,16 +45,10 @@ import com.google.gerrit.reviewdb.client.AccountExternalId; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project.NameKey; -import com.google.gerrit.reviewdb.server.AccountAccess; import com.google.gerrit.reviewdb.server.AccountExternalIdAccess; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.account.AccountImpoter; -import com.google.gerrit.server.account.CreateAccount; import com.google.gerrit.server.git.GitRepositoryManager; -import com.google.gerrit.server.git.MergeException; -import com.google.gerrit.server.project.InvalidChangeOperationException; -import com.google.gerrit.server.project.NoSuchChangeException; -import com.google.gerrit.server.project.NoSuchProjectException; import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.ProjectControl; import com.google.gerrit.server.project.ProjectState; @@ -115,13 +101,13 @@ Provider<ReviewDb> schema, AccountImpoter accountImporter, GitHubRepository.Factory gitHubRepoFactory, ScopedProvider<GitHubLogin> ghLoginProvider, - HttpServletRequest httpRequest, @Assisted("index") int jobIndex, + @Assisted("index") int jobIndex, @Assisted("organisation") String organisation, @Assisted("name") String repoName, @Assisted int pullRequestId, @Assisted PullRequestImportType importType) { this.jobIndex = jobIndex; this.repoMgr = repoMgr; - this.ghLogin = ghLoginProvider.get(httpRequest); + this.ghLogin = ghLoginProvider.get(); this.organisation = organisation; this.repoName = repoName; this.importType = importType;
diff --git a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/ReplicateProjectStep.java b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/ReplicateProjectStep.java index ce74c03..83fbb51 100644 --- a/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/ReplicateProjectStep.java +++ b/github-plugin/src/main/java/com/googlesrouce/gerrit/plugins/github/git/ReplicateProjectStep.java
@@ -13,8 +13,6 @@ // limitations under the License. package com.googlesrouce.gerrit.plugins.github.git; -import javax.servlet.http.HttpServletRequest; - import org.eclipse.jgit.lib.ProgressMonitor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,14 +40,13 @@ public ReplicateProjectStep(final ReplicationConfig replicationConfig, final GitHubRepository.Factory gitHubRepoFactory, final ScopedProvider<GitHubLogin> ghLoginProvider, - final HttpServletRequest httpRequest, @GitHubURL String gitHubUrl, @Assisted("organisation") String organisation, @Assisted("name") String repository) { super(gitHubUrl, organisation, repository, gitHubRepoFactory); LOG.debug("Gerrit ReplicateProject " + organisation + "/" + repository); this.replicationConfig = replicationConfig; - GitHubLogin ghLogin = ghLoginProvider.get(httpRequest); + GitHubLogin ghLogin = ghLoginProvider.get(); this.authUsername = ghLogin.getMyself().getLogin(); this.authToken = ghLogin.token.access_token; this.gitHubUrl = gitHubUrl;