Refactor: Use static `scanChangeIds` method to retrieve project changes
Replace existing logic with the static `scanChangeIds` method to
simplify and clean up the code for retrieving change IDs.
Change-Id: I086958dc107f12dbc3aa77728b19d01b2e1de8aa
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
index 5ea32f6..3da6f68 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
@@ -30,8 +30,8 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.util.List;
import java.util.NoSuchElementException;
+import java.util.Set;
import org.kohsuke.args4j.Argument;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,7 +62,7 @@
ProjectResource rsrc = new ProjectResource(projectState, self.get());
try (CommandProgressMonitor monitor = new CommandProgressMonitor(stdout)) {
renameProject.assertCanRename(rsrc, input, monitor);
- List<Change.Id> changeIds = renameProject.getChanges(rsrc, monitor);
+ Set<Change.Id> changeIds = renameProject.getChanges(rsrc, monitor);
if (!renameProject.startRename(
rsrc, input, monitor, continueRename(changeIds, monitor), changeIds)) {
stdout.flush();
@@ -73,7 +73,7 @@
}
}
- private boolean continueRename(List<Change.Id> changes, ProgressMonitor pm) throws IOException {
+ private boolean continueRename(Set<Change.Id> changes, ProgressMonitor pm) throws IOException {
if (changes != null && changes.size() > WARNING_LIMIT) {
// close the progress task explicitly this time to get user input
pm.close();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
index f653147..572cbeb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
@@ -81,7 +81,7 @@
RenameRevertException {
ProgressMonitor progressMonitor = NoopMonitor.INSTANCE;
assertCanRename(resource, input, progressMonitor);
- List<Id> changeIds = getChanges(resource, progressMonitor);
+ Set<Id> changeIds = getChanges(resource, progressMonitor);
if (startRename(
resource,
input,
@@ -98,7 +98,7 @@
Input input,
ProgressMonitor progressMonitor,
boolean continueRename,
- List<Change.Id> changeIds)
+ Set<Change.Id> changeIds)
throws ResourceConflictException,
BadRequestException,
AuthException,
@@ -121,7 +121,7 @@
return false;
}
} else {
- doRename(Collections.emptyList(), resource, input, NoopMonitor.INSTANCE);
+ doRename(Collections.emptySet(), resource, input, NoopMonitor.INSTANCE);
}
return true;
}
@@ -280,7 +280,7 @@
}
}
- void doRename(List<Change.Id> changeIds, ProjectResource rsrc, Input input, ProgressMonitor pm)
+ void doRename(Set<Change.Id> changeIds, ProjectResource rsrc, Input input, ProgressMonitor pm)
throws InterruptedException, ConfigInvalidException, IOException, RenameRevertException {
Project.NameKey oldProjectKey = rsrc.getNameKey();
Project.NameKey newProjectKey = Project.nameKey(input.name);
@@ -357,7 +357,7 @@
}
void indexRenameStep(
- List<Change.Id> changeIds,
+ Set<Change.Id> changeIds,
Project.NameKey oldProjectKey,
Project.NameKey newProjectKey,
ProgressMonitor pm)
@@ -396,8 +396,8 @@
return stepsPerformed;
}
- List<Change.Id> getChanges(ProjectResource rsrc, ProgressMonitor pm) throws IOException {
- pm.beginTask("Retrieving the list of changes from DB");
+ Set<Change.Id> getChanges(ProjectResource rsrc, ProgressMonitor pm) throws IOException {
+ pm.beginTask("Retrieving changes from DB");
Project.NameKey oldProjectKey = rsrc.getNameKey();
return dbHandler.getChangeIds(oldProjectKey);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
index d6e5713..7f6823d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
@@ -25,6 +25,7 @@
import com.googlesource.gerrit.plugins.renameproject.monitor.ProgressMonitor;
import java.io.IOException;
import java.util.List;
+import java.util.Set;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,7 +52,7 @@
void performRevert(
List<Step> stepsPerformed,
- List<Id> changeIds,
+ Set<Id> changeIds,
Project.NameKey oldProjectKey,
Project.NameKey newProjectKey,
ProgressMonitor pm)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
index ae5a57a..dc70b30 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
@@ -26,7 +26,6 @@
import com.google.gerrit.server.account.AccountsUpdate;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.notedb.ChangeNotes;
-import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult;
import com.google.gerrit.server.query.account.InternalAccountQuery;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -36,11 +35,9 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.Stream;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Repository;
import org.slf4j.Logger;
@@ -50,34 +47,25 @@
public class DatabaseRenameHandler {
private static final Logger log = LoggerFactory.getLogger(DatabaseRenameHandler.class);
- private final ChangeNotes.Factory notesFactory;
private final GitRepositoryManager repoManager;
private final Provider<InternalAccountQuery> accountQueryProvider;
private final Provider<AccountsUpdate> accountsUpdateProvider;
@Inject
public DatabaseRenameHandler(
- ChangeNotes.Factory notesFactory,
GitRepositoryManager repoManager,
Provider<InternalAccountQuery> accountQueryProvider,
@ServerInitiated Provider<AccountsUpdate> accountsUpdateProvider) {
this.accountQueryProvider = accountQueryProvider;
- this.notesFactory = notesFactory;
this.repoManager = repoManager;
this.accountsUpdateProvider = accountsUpdateProvider;
}
- public List<Change.Id> getChangeIds(Project.NameKey oldProjectKey) throws IOException {
+ public Set<Change.Id> getChangeIds(Project.NameKey oldProjectKey) throws IOException {
log.debug("Starting to retrieve changes from the DB for project {}", oldProjectKey.get());
- List<Change.Id> changeIds = new ArrayList<>();
+ Set<Change.Id> changeIds;
try (Repository repo = repoManager.openRepository(oldProjectKey)) {
- Stream<ChangeNotesResult> changes = notesFactory.scan(repo, oldProjectKey);
- Iterator<ChangeNotesResult> iterator = changes.iterator();
- while (iterator.hasNext()) {
- ChangeNotesResult change = iterator.next();
- Change.Id changeId = change.id();
- changeIds.add(changeId);
- }
+ changeIds = ChangeNotes.Factory.scanChangeIds(repo).keySet();
}
log.debug(
"Number of changes in noteDb related to project {} are {}",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
index 5b01391..16105e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
@@ -24,6 +24,7 @@
import com.googlesource.gerrit.plugins.renameproject.monitor.ProgressMonitor;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
@@ -46,7 +47,7 @@
}
public void updateIndex(
- List<Change.Id> changeIds, Project.NameKey newProjectKey, ProgressMonitor pm)
+ Set<Change.Id> changeIds, Project.NameKey newProjectKey, ProgressMonitor pm)
throws InterruptedException {
log.debug("Starting to index {} change(s).", changeIds.size());
ExecutorService executor =
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
index 7103c9b..24074e6 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
@@ -29,8 +29,8 @@
import com.google.gerrit.server.project.ProjectState;
import com.googlesource.gerrit.plugins.renameproject.RenameProject.Step;
import com.googlesource.gerrit.plugins.renameproject.monitor.ProgressMonitor;
-import java.util.List;
import java.util.Optional;
+import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
@@ -67,7 +67,7 @@
@UseLocalDisk
public void testRevertFromFsHandler() throws Exception {
Result result = createChange();
- List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+ Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
assertRenamed(result);
@@ -81,7 +81,7 @@
@UseLocalDisk
public void testRevertFromCacheHandler() throws Exception {
Result result = createChange();
- List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+ Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
renameProject.cacheRenameStep(oldProjectKey, newProjectKey);
@@ -96,7 +96,7 @@
@UseLocalDisk
public void testRevertFromDbHandler() throws Exception {
Result result = createChange();
- List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+ Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
renameProject.cacheRenameStep(oldProjectKey, newProjectKey);
@@ -112,7 +112,7 @@
@UseLocalDisk
public void testRevertFromIndexHandler() throws Exception {
Result result = createChange();
- List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+ Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
renameProject.cacheRenameStep(oldProjectKey, newProjectKey);