Adapt plugin to latest changes on Gerrit master

SubscriptionGraph can be used directly on its own without the need of
SubmoduleOp.

Change-Id: Id08f2931b36a02c117dee4bba7b23e7df536ff95
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
index b20f365..55ed291 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditions.java
@@ -14,9 +14,11 @@
 
 package com.googlesource.gerrit.plugins.renameproject.conditions;
 
+import static com.google.gerrit.entities.RefNames.REFS_HEADS;
+import static java.util.stream.Collectors.toSet;
+
 import com.google.gerrit.entities.BranchNameKey;
 import com.google.gerrit.entities.Project;
-import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.common.ProjectInfo;
 import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.server.config.AllProjectsName;
@@ -26,18 +28,16 @@
 import com.google.gerrit.server.restapi.project.ListChildProjects;
 import com.google.gerrit.server.submit.MergeOpRepoManager;
 import com.google.gerrit.server.submit.SubmoduleConflictException;
-import com.google.gerrit.server.submit.SubmoduleOp;
+import com.google.gerrit.server.submit.SubscriptionGraph;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
 import com.googlesource.gerrit.plugins.renameproject.CannotRenameProjectException;
 import java.io.IOException;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.Repository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +52,7 @@
   public final AllUsersName allUsersName;
   private final Provider<ListChildProjects> listChildProjectsProvider;
   private final GitRepositoryManager repoManager;
-  private final SubmoduleOp.Factory subOpFactory;
+  private final SubscriptionGraph.Factory subscriptionGraphFactory;
   private final Provider<MergeOpRepoManager> ormProvider;
 
   @Inject
@@ -61,13 +61,13 @@
       AllUsersName allUsersName,
       Provider<ListChildProjects> listChildProjectsProvider,
       GitRepositoryManager repoManager,
-      SubmoduleOp.Factory subOpFactory,
+      SubscriptionGraph.Factory subscriptionGraphFactory,
       Provider<MergeOpRepoManager> ormProvider) {
     this.allProjectsName = allProjectsName;
     this.allUsersName = allUsersName;
     this.listChildProjectsProvider = listChildProjectsProvider;
     this.repoManager = repoManager;
-    this.subOpFactory = subOpFactory;
+    this.subscriptionGraphFactory = subscriptionGraphFactory;
     this.ormProvider = ormProvider;
   }
 
@@ -109,11 +109,11 @@
   private void assertIsNotSubscribed(Project.NameKey key) throws CannotRenameProjectException {
     try (Repository repo = repoManager.openRepository(key);
         MergeOpRepoManager orm = ormProvider.get()) {
-      Set<BranchNameKey> branches = new HashSet<>();
-      for (Ref ref : repo.getRefDatabase().getRefsByPrefix(RefNames.REFS_HEADS)) {
-        branches.add(BranchNameKey.create(key, ref.getName()));
-      }
-      SubmoduleOp sub = subOpFactory.create(branches, orm);
+      Set<BranchNameKey> branches =
+          repo.getRefDatabase().getRefsByPrefix(REFS_HEADS).stream()
+              .map(ref -> BranchNameKey.create(key, ref.getName()))
+              .collect(toSet());
+      SubscriptionGraph sub = subscriptionGraphFactory.compute(branches, orm);
       for (BranchNameKey b : branches) {
         if (sub.hasSuperproject(b)) {
           String message = "Cannot rename a project subscribed to by the other projects";
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
index 989292b..049db6d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/conditions/RenamePreconditionsTest.java
@@ -30,7 +30,7 @@
 import com.google.gerrit.server.project.ProjectState;
 import com.google.gerrit.server.restapi.project.ListChildProjects;
 import com.google.gerrit.server.submit.MergeOpRepoManager;
-import com.google.gerrit.server.submit.SubmoduleOp;
+import com.google.gerrit.server.submit.SubscriptionGraph;
 import com.google.inject.Provider;
 import com.googlesource.gerrit.plugins.renameproject.CannotRenameProjectException;
 import java.util.ArrayList;
@@ -48,7 +48,6 @@
 
   @Mock private Provider<ListChildProjects> listChildProjectsProvider;
   @Mock private GitRepositoryManager repoManager;
-  @Mock private SubmoduleOp.Factory subOpFactory;
   @Mock private Provider<MergeOpRepoManager> ormProvider;
   @Mock private RenamePreconditions preconditions;
   @Mock private ObjectDatabase objDb;
@@ -56,6 +55,7 @@
   @Mock private CurrentUser user;
   @Mock private Repository repo;
   @Mock private ListChildProjects listChildProjects;
+  @Mock private SubscriptionGraph.Factory subscriptionGraphFactory;
 
   private AllProjectsName allProjects;
   private AllUsersName allUsersName;
@@ -76,7 +76,7 @@
             allUsersName,
             listChildProjectsProvider,
             repoManager,
-            subOpFactory,
+            subscriptionGraphFactory,
             ormProvider);
   }