Merge "DeletePreconditions: Use directly SubscriptionGraph"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
index de96ec1..e35711a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditions.java
@@ -40,7 +40,7 @@
 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;
@@ -59,7 +59,7 @@
   private final String pluginName;
   private final Provider<InternalChangeQuery> queryProvider;
   private final GitRepositoryManager repoManager;
-  private final SubmoduleOp.Factory subOpFactory;
+  private final SubscriptionGraph.Factory subscriptionGraphFactory;
   private final Provider<CurrentUser> userProvider;
   private final ProtectedProjects protectedProjects;
   private final PermissionBackend permissionBackend;
@@ -72,7 +72,7 @@
       @PluginName String pluginName,
       Provider<InternalChangeQuery> queryProvider,
       GitRepositoryManager repoManager,
-      SubmoduleOp.Factory subOpFactory,
+      SubscriptionGraph.Factory subscriptionGraphFactory,
       Provider<CurrentUser> userProvider,
       ProtectedProjects protectedProjects,
       PermissionBackend permissionBackend) {
@@ -82,7 +82,7 @@
     this.pluginName = pluginName;
     this.queryProvider = queryProvider;
     this.repoManager = repoManager;
-    this.subOpFactory = subOpFactory;
+    this.subscriptionGraphFactory = subscriptionGraphFactory;
     this.userProvider = userProvider;
     this.protectedProjects = protectedProjects;
     this.permissionBackend = permissionBackend;
@@ -156,9 +156,9 @@
           repo.getRefDatabase().getRefsByPrefix(REFS_HEADS).stream()
               .map(ref -> BranchNameKey.create(projectNameKey, ref.getName()))
               .collect(toSet());
-      SubmoduleOp sub = subOpFactory.create(branches, mergeOp);
+      SubscriptionGraph graph = subscriptionGraphFactory.compute(branches, mergeOp);
       for (BranchNameKey b : branches) {
-        if (sub.hasSuperproject(b)) {
+        if (graph.hasSuperproject(b)) {
           throw new CannotDeleteProjectException("Project is subscribed by other projects.");
         }
       }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
index 235dc3c..e126c19 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/DeletePreconditionsTest.java
@@ -14,15 +14,6 @@
 
 package com.googlesource.gerrit.plugins.deleteproject;
 
-import static com.google.common.truth.Truth.assertThat;
-import static com.google.gerrit.testing.GerritJUnit.assertThrows;
-import static com.googlesource.gerrit.plugins.deleteproject.DeleteOwnProjectCapability.DELETE_OWN_PROJECT;
-import static com.googlesource.gerrit.plugins.deleteproject.DeleteProjectCapability.DELETE_PROJECT;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 import com.google.common.collect.ImmutableList;
 import com.google.gerrit.entities.Project;
 import com.google.gerrit.exceptions.StorageException;
@@ -42,7 +33,7 @@
 import com.google.gerrit.server.query.change.InternalChangeQuery;
 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 org.junit.Before;
 import org.junit.Test;
@@ -50,6 +41,15 @@
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.testing.GerritJUnit.assertThrows;
+import static com.googlesource.gerrit.plugins.deleteproject.DeleteOwnProjectCapability.DELETE_OWN_PROJECT;
+import static com.googlesource.gerrit.plugins.deleteproject.DeleteProjectCapability.DELETE_PROJECT;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 @RunWith(MockitoJUnitRunner.class)
 public class DeletePreconditionsTest {
   private static final String PLUGIN_NAME = "delete-project";
@@ -60,7 +60,7 @@
   @Mock private Provider<MergeOpRepoManager> mergeOpProvider;
   @Mock private Provider<InternalChangeQuery> queryProvider;
   @Mock private GitRepositoryManager repoManager;
-  @Mock private SubmoduleOp.Factory subOpFactory;
+  @Mock private SubscriptionGraph.Factory subscriptionGraphFactory;
   @Mock private CurrentUser currentUser;
   @Mock private Provider<CurrentUser> userProvider;
   @Mock private ProjectState state;
@@ -84,7 +84,7 @@
             PLUGIN_NAME,
             queryProvider,
             repoManager,
-            subOpFactory,
+            subscriptionGraphFactory,
             userProvider,
             protectedProjects,
             permissionBackend);