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