DeletePreconditions: Use directly SubscriptionGraph Now SubscriptionGraph can be injected on its own, no need to use SubmoduleOp. Change-Id: I8a5d4ca4df5515bafcd33bce088f41851cd6059d
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);