From 3d60276a2b0260638079cef5277075076cff4cfb Mon Sep 17 00:00:00 2001 From: Yacob Yonas Date: Tue, 22 Jul 2014 18:00:15 -0700 Subject: [PATCH] Expose the history of all reviewers ever on a change For the purpose of deleting a draft patch-set and all of its comments, we need a list of every user who has ever been a reviewer on that change because those are all the users who could possibly have a draft comment on this change. With this information, we will be able to scan the draft refs for all those users to ensure that we delete every comment for this draft patch-set. Change-Id: I86a8c5242d62991c3c885911f37438e4f422b0da --- .../com/google/gerrit/server/notedb/ChangeNotes.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java index f1e68a5e47..6ad88faae1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java @@ -160,6 +160,7 @@ public class ChangeNotes extends AbstractChangeNotes { private final Map>> approvals; private final Map reviewers; + private final List allPastReviewers; private final List submitRecords; private final Multimap changeMessages; private final Multimap commentsForPs; @@ -176,6 +177,7 @@ public class ChangeNotes extends AbstractChangeNotes { this.repo = repoManager.openRepository(getProjectName(change)); approvals = Maps.newHashMap(); reviewers = Maps.newLinkedHashMap(); + allPastReviewers = Lists.newArrayList(); submitRecords = Lists.newArrayListWithExpectedSize(1); changeMessages = LinkedListMultimap.create(); commentsForPs = ArrayListMultimap.create(); @@ -188,6 +190,7 @@ public class ChangeNotes extends AbstractChangeNotes { parse(commit); } parseComments(); + allPastReviewers.addAll(reviewers.keySet()); pruneReviewers(); } @@ -493,6 +496,7 @@ public class ChangeNotes extends AbstractChangeNotes { private final Change change; private ImmutableListMultimap approvals; private ImmutableSetMultimap reviewers; + private ImmutableList allPastReviewers; private ImmutableList submitRecords; private ImmutableListMultimap changeMessages; private ImmutableListMultimap commentsForBase; @@ -523,6 +527,13 @@ public class ChangeNotes extends AbstractChangeNotes { return reviewers; } + /** + * @return a list of all users who have ever been a reviewer on this change. + */ + public ImmutableList getAllPastReviewers() { + return allPastReviewers; + } + /** * @return submit records stored during the most recent submit; only for * changes that were actually submitted. @@ -636,6 +647,7 @@ public class ChangeNotes extends AbstractChangeNotes { reviewers.put(e.getValue(), e.getKey()); } this.reviewers = reviewers.build(); + this.allPastReviewers = ImmutableList.copyOf(parser.allPastReviewers); submitRecords = ImmutableList.copyOf(parser.submitRecords); } catch (ParseException e1) {