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));