SubscriptionGraph: Make the factory an interface
Make SubscriptionGraph.Factory an interface for better abstraction.
Rename the implementation class to SubscriptionGraph.DefaultFactory.
Change-Id: I8c01f550dd72441ff79f6079bea9ef1a26550466
diff --git a/java/com/google/gerrit/server/submit/SubmoduleOp.java b/java/com/google/gerrit/server/submit/SubmoduleOp.java
index 143be4d..5adda2c 100644
--- a/java/com/google/gerrit/server/submit/SubmoduleOp.java
+++ b/java/com/google/gerrit/server/submit/SubmoduleOp.java
@@ -139,7 +139,7 @@
this.maxCommitMessages = cfg.getLong("submodule", "maxCommitMessages", 1000);
this.orm = orm;
this.subscriptionGraphFactory =
- new SubscriptionGraph.Factory(gitmodulesFactory, projectCache, orm);
+ new SubscriptionGraph.DefaultFactory(gitmodulesFactory, projectCache, orm);
if (cfg.getBoolean("submodule", "enableSuperProjectSubscriptions", true)) {
this.subscriptionGraph = subscriptionGraphFactory.compute(updatedBranches);
} else {
diff --git a/java/com/google/gerrit/server/submit/SubscriptionGraph.java b/java/com/google/gerrit/server/submit/SubscriptionGraph.java
index 54e50f2..406d878 100644
--- a/java/com/google/gerrit/server/submit/SubscriptionGraph.java
+++ b/java/com/google/gerrit/server/submit/SubscriptionGraph.java
@@ -148,7 +148,11 @@
return targets.get(branch);
}
- static class Factory {
+ public interface Factory {
+ SubscriptionGraph compute(Set<BranchNameKey> updatedBranches) throws SubmoduleConflictException;
+ }
+
+ static class DefaultFactory implements Factory {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final ProjectCache projectCache;
private final GitModules.Factory gitmodulesFactory;
@@ -168,7 +172,7 @@
/** @see SubscriptionGraph#subscribedBranches */
private final Set<BranchNameKey> subscribedBranches;
- Factory(
+ DefaultFactory(
GitModules.Factory gitmodulesFactory, ProjectCache projectCache, MergeOpRepoManager orm) {
this.gitmodulesFactory = gitmodulesFactory;
this.projectCache = projectCache;
@@ -181,7 +185,8 @@
this.subscribedBranches = new HashSet<>();
}
- SubscriptionGraph compute(Set<BranchNameKey> updatedBranches)
+ @Override
+ public SubscriptionGraph compute(Set<BranchNameKey> updatedBranches)
throws SubmoduleConflictException {
return new SubscriptionGraph(
updatedBranches,
diff --git a/javatests/com/google/gerrit/server/submit/SubscriptionGraphTest.java b/javatests/com/google/gerrit/server/submit/SubscriptionGraphTest.java
index 470b40e..dbcc209 100644
--- a/javatests/com/google/gerrit/server/submit/SubscriptionGraphTest.java
+++ b/javatests/com/google/gerrit/server/submit/SubscriptionGraphTest.java
@@ -28,7 +28,7 @@
import com.google.gerrit.entities.SubmoduleSubscription;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectState;
-import com.google.gerrit.server.submit.SubscriptionGraph.Factory;
+import com.google.gerrit.server.submit.SubscriptionGraph.DefaultFactory;
import com.google.gerrit.testing.InMemoryRepositoryManager;
import java.util.List;
import java.util.Optional;
@@ -82,7 +82,7 @@
@Test
public void oneSuperprojectOneSubmodule() throws Exception {
SubscriptionGraph.Factory factory =
- new Factory(mockGitModulesFactory, mockProjectCache, mergeOpRepoManager);
+ new DefaultFactory(mockGitModulesFactory, mockProjectCache, mergeOpRepoManager);
SubscriptionGraph subscriptionGraph = factory.compute(ImmutableSet.of(SUB_BRANCH));
assertThat(subscriptionGraph.getAffectedSuperProjects()).containsExactly(SUPER_PROJECT);
@@ -99,8 +99,7 @@
@Test
public void circularSubscription() throws Exception {
SubscriptionGraph.Factory factory =
- new Factory(mockGitModulesFactory, mockProjectCache, mergeOpRepoManager);
-
+ new DefaultFactory(mockGitModulesFactory, mockProjectCache, mergeOpRepoManager);
setSubscription(SUPER_BRANCH, ImmutableList.of(SUB_BRANCH));
SubmoduleConflictException e =
assertThrows(
@@ -156,7 +155,7 @@
setSubscription(submoduleBranch3, ImmutableList.of(superBranch1, superBranch2));
SubscriptionGraph.Factory factory =
- new Factory(mockGitModulesFactory, mockProjectCache, mergeOpRepoManager);
+ new DefaultFactory(mockGitModulesFactory, mockProjectCache, mergeOpRepoManager);
SubscriptionGraph subscriptionGraph =
factory.compute(ImmutableSet.of(submoduleBranch1, submoduleBranch2));