ChangeNotes: Order ChangeMessages in forward chronological order
This matches the ordering of PatchSetApprovals. Change-Id: Icd8c8428381ff5044deede4ae53bd48e8d040d43
This commit is contained in:
@@ -81,6 +81,15 @@ public class ChangeNotes extends VersionedMetaData {
|
||||
}
|
||||
});
|
||||
|
||||
private static final Ordering<ChangeMessage> MESSAGE_BY_TIME =
|
||||
Ordering.natural().onResultOf(
|
||||
new Function<ChangeMessage, Timestamp>() {
|
||||
@Override
|
||||
public Timestamp apply(ChangeMessage input) {
|
||||
return input.getWrittenOn();
|
||||
}
|
||||
});
|
||||
|
||||
@Singleton
|
||||
public static class Factory {
|
||||
private final GitRepositoryManager repoManager;
|
||||
@@ -141,6 +150,13 @@ public class ChangeNotes extends VersionedMetaData {
|
||||
return ImmutableListMultimap.copyOf(result);
|
||||
}
|
||||
|
||||
private ImmutableListMultimap<PatchSet.Id, ChangeMessage> buildMessages() {
|
||||
for (Collection<ChangeMessage> v : changeMessages.asMap().values()) {
|
||||
Collections.sort((List<ChangeMessage>) v, MESSAGE_BY_TIME);
|
||||
}
|
||||
return ImmutableListMultimap.copyOf(changeMessages);
|
||||
}
|
||||
|
||||
private void parse(RevCommit commit) throws ConfigInvalidException {
|
||||
if (status == null) {
|
||||
status = parseStatus(commit);
|
||||
@@ -470,13 +486,9 @@ public class ChangeNotes extends VersionedMetaData {
|
||||
return submitRecords;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return change messages. for some PatchSet.Id, the change messages
|
||||
* are stored in a list in reverse chronological order.
|
||||
*/
|
||||
/** @return change messages by patch set, in chronological order. */
|
||||
public ImmutableListMultimap<PatchSet.Id, ChangeMessage> getChangeMessages() {
|
||||
return changeMessages;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -500,6 +512,7 @@ public class ChangeNotes extends VersionedMetaData {
|
||||
change.setStatus(parser.status);
|
||||
}
|
||||
approvals = parser.buildApprovals();
|
||||
changeMessages = parser.buildMessages();
|
||||
|
||||
ImmutableSetMultimap.Builder<ReviewerState, Account.Id> reviewers =
|
||||
ImmutableSetMultimap.builder();
|
||||
@@ -509,15 +522,6 @@ public class ChangeNotes extends VersionedMetaData {
|
||||
}
|
||||
this.reviewers = reviewers.build();
|
||||
|
||||
ImmutableListMultimap.Builder<PatchSet.Id, ChangeMessage> cms =
|
||||
ImmutableListMultimap.builder();
|
||||
for (Map.Entry<PatchSet.Id, ChangeMessage> e
|
||||
: parser.changeMessages.entries()) {
|
||||
cms.put(e.getKey(), e.getValue());
|
||||
}
|
||||
this.changeMessages = cms.build();
|
||||
|
||||
|
||||
submitRecords = ImmutableList.copyOf(parser.submitRecords);
|
||||
} finally {
|
||||
walk.release();
|
||||
|
@@ -819,16 +819,16 @@ public class ChangeNotesTest {
|
||||
|
||||
List<ChangeMessage> cm = changeMessages.get(ps1);
|
||||
assertEquals(2, cm.size());
|
||||
assertEquals("Second change message.\n",
|
||||
assertEquals("First change message.\n",
|
||||
cm.get(0).getMessage());
|
||||
assertEquals(changeOwner.getAccount().getId(),
|
||||
cm.get(0).getAuthor());
|
||||
assertEquals(ps1, cm.get(0).getPatchSetId());
|
||||
assertEquals("First change message.\n",
|
||||
assertEquals("Second change message.\n",
|
||||
cm.get(1).getMessage());
|
||||
assertEquals(changeOwner.getAccount().getId(),
|
||||
cm.get(0).getAuthor());
|
||||
assertEquals(ps1, cm.get(0).getPatchSetId());
|
||||
cm.get(1).getAuthor());
|
||||
assertEquals(ps1, cm.get(1).getPatchSetId());
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user