From 723d26d39f4389a4405dbde32bf1d28c58103583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Ar=C3=A8s?= Date: Thu, 16 Apr 2015 15:50:49 -0400 Subject: [PATCH] Create SubmoduleSectionParser using assisted injection This will allow to change dependencies of SubmoduleSectionParser without adding them to SubmoduleOp only to pass them to SubmoduleSectionParser constructor. Change-Id: Ib995027284310caec21cd367ffde3c5f27b2eb3f --- .../server/config/GerritGlobalModule.java | 2 ++ .../google/gerrit/server/git/SubmoduleOp.java | 9 ++++++--- .../server/util/SubmoduleSectionParser.java | 20 ++++++++++++++----- .../util/SubmoduleSectionParserTest.java | 4 ++-- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java index 06d73a8fc0..6e4e2ed32c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java @@ -123,6 +123,7 @@ import com.google.gerrit.server.query.change.ConflictsCacheImpl; import com.google.gerrit.server.ssh.SshAddressesModule; import com.google.gerrit.server.tools.ToolsCatalog; import com.google.gerrit.server.util.IdGenerator; +import com.google.gerrit.server.util.SubmoduleSectionParser; import com.google.gerrit.server.util.ThreadLocalRequestContext; import com.google.gerrit.server.validators.GroupCreationValidationListener; import com.google.gerrit.server.validators.HashtagValidationListener; @@ -294,6 +295,7 @@ public class GerritGlobalModule extends FactoryModule { factory(MergeValidators.Factory.class); factory(ProjectConfigValidator.Factory.class); factory(NotesBranchUtil.Factory.class); + factory(SubmoduleSectionParser.Factory.class); bind(AccountManager.class); bind(ChangeUserName.CurrentUser.class); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java index e67dd2caa4..f05a1d4f19 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java @@ -93,6 +93,7 @@ public class SubmoduleOp { private final Set updatedSubscribers; private final Account account; private final ChangeHooks changeHooks; + private final SubmoduleSectionParser.Factory subSecParserFactory; @Inject public SubmoduleOp(@Assisted Branch.NameKey destBranch, @@ -109,7 +110,8 @@ public class SubmoduleOp { GitRepositoryManager repoManager, GitReferenceUpdated gitRefUpdated, @Nullable @Assisted Account account, - ChangeHooks changeHooks) { + ChangeHooks changeHooks, + SubmoduleSectionParser.Factory subSecParserFactory) { this.destBranch = destBranch; this.mergeTip = mergeTip; this.rw = rw; @@ -124,6 +126,7 @@ public class SubmoduleOp { this.gitRefUpdated = gitRefUpdated; this.account = account; this.changeHooks = changeHooks; + this.subSecParserFactory = subSecParserFactory; updatedSubscribers = new HashSet<>(); } @@ -168,8 +171,8 @@ public class SubmoduleOp { final Set oldSubscriptions = new HashSet<>(schema.submoduleSubscriptions() .bySuperProject(destBranch).toList()); - final List newSubscriptions = - new SubmoduleSectionParser(bbc, thisServer, target, repoManager) + List newSubscriptions = + subSecParserFactory.create(bbc, thisServer, target) .parseAllSections(); final Set alreadySubscribeds = new HashSet<>(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/util/SubmoduleSectionParser.java b/gerrit-server/src/main/java/com/google/gerrit/server/util/SubmoduleSectionParser.java index 8970425c02..098bc0c118 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/util/SubmoduleSectionParser.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/util/SubmoduleSectionParser.java @@ -18,6 +18,8 @@ import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.SubmoduleSubscription; import com.google.gerrit.server.git.GitRepositoryManager; +import com.google.inject.Inject; +import com.google.inject.assistedinject.Assisted; import org.eclipse.jgit.lib.BlobBasedConfig; import org.eclipse.jgit.lib.Constants; @@ -45,18 +47,26 @@ import java.util.List; * */ public class SubmoduleSectionParser { + + public interface Factory { + SubmoduleSectionParser create(BlobBasedConfig bbc, String thisServer, + Branch.NameKey superProjectBranch); + } + + private final GitRepositoryManager repoManager; private final BlobBasedConfig bbc; private final String thisServer; private final Branch.NameKey superProjectBranch; - private final GitRepositoryManager repoManager; - public SubmoduleSectionParser(final BlobBasedConfig bbc, - final String thisServer, final Branch.NameKey superProjectBranch, - final GitRepositoryManager repoManager) { + @Inject + public SubmoduleSectionParser(GitRepositoryManager repoManager, + @Assisted BlobBasedConfig bbc, + @Assisted String thisServer, + @Assisted Branch.NameKey superProjectBranch) { + this.repoManager = repoManager; this.bbc = bbc; this.thisServer = thisServer; this.superProjectBranch = superProjectBranch; - this.repoManager = repoManager; } public List parseAllSections() { diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/util/SubmoduleSectionParserTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/util/SubmoduleSectionParserTest.java index d87888f212..22cd8d7acf 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/util/SubmoduleSectionParserTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/util/SubmoduleSectionParserTest.java @@ -229,8 +229,8 @@ public class SubmoduleSectionParserTest extends LocalDiskRepositoryTestCase { doReplay(); final SubmoduleSectionParser ssp = - new SubmoduleSectionParser(bbc, THIS_SERVER, superProjectBranch, - repoManager); + new SubmoduleSectionParser(repoManager, bbc, THIS_SERVER, + superProjectBranch); List returnedSubscriptions = ssp.parseAllSections();