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
|
@Singleton
|
||||||
public static class Factory {
|
public static class Factory {
|
||||||
private final GitRepositoryManager repoManager;
|
private final GitRepositoryManager repoManager;
|
||||||
@@ -141,6 +150,13 @@ public class ChangeNotes extends VersionedMetaData {
|
|||||||
return ImmutableListMultimap.copyOf(result);
|
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 {
|
private void parse(RevCommit commit) throws ConfigInvalidException {
|
||||||
if (status == null) {
|
if (status == null) {
|
||||||
status = parseStatus(commit);
|
status = parseStatus(commit);
|
||||||
@@ -470,13 +486,9 @@ public class ChangeNotes extends VersionedMetaData {
|
|||||||
return submitRecords;
|
return submitRecords;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** @return change messages by patch set, in chronological order. */
|
||||||
* @return change messages. for some PatchSet.Id, the change messages
|
|
||||||
* are stored in a list in reverse chronological order.
|
|
||||||
*/
|
|
||||||
public ImmutableListMultimap<PatchSet.Id, ChangeMessage> getChangeMessages() {
|
public ImmutableListMultimap<PatchSet.Id, ChangeMessage> getChangeMessages() {
|
||||||
return changeMessages;
|
return changeMessages;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -500,6 +512,7 @@ public class ChangeNotes extends VersionedMetaData {
|
|||||||
change.setStatus(parser.status);
|
change.setStatus(parser.status);
|
||||||
}
|
}
|
||||||
approvals = parser.buildApprovals();
|
approvals = parser.buildApprovals();
|
||||||
|
changeMessages = parser.buildMessages();
|
||||||
|
|
||||||
ImmutableSetMultimap.Builder<ReviewerState, Account.Id> reviewers =
|
ImmutableSetMultimap.Builder<ReviewerState, Account.Id> reviewers =
|
||||||
ImmutableSetMultimap.builder();
|
ImmutableSetMultimap.builder();
|
||||||
@@ -509,15 +522,6 @@ public class ChangeNotes extends VersionedMetaData {
|
|||||||
}
|
}
|
||||||
this.reviewers = reviewers.build();
|
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);
|
submitRecords = ImmutableList.copyOf(parser.submitRecords);
|
||||||
} finally {
|
} finally {
|
||||||
walk.release();
|
walk.release();
|
||||||
|
@@ -819,16 +819,16 @@ public class ChangeNotesTest {
|
|||||||
|
|
||||||
List<ChangeMessage> cm = changeMessages.get(ps1);
|
List<ChangeMessage> cm = changeMessages.get(ps1);
|
||||||
assertEquals(2, cm.size());
|
assertEquals(2, cm.size());
|
||||||
assertEquals("Second change message.\n",
|
assertEquals("First change message.\n",
|
||||||
cm.get(0).getMessage());
|
cm.get(0).getMessage());
|
||||||
assertEquals(changeOwner.getAccount().getId(),
|
assertEquals(changeOwner.getAccount().getId(),
|
||||||
cm.get(0).getAuthor());
|
cm.get(0).getAuthor());
|
||||||
assertEquals(ps1, cm.get(0).getPatchSetId());
|
assertEquals(ps1, cm.get(0).getPatchSetId());
|
||||||
assertEquals("First change message.\n",
|
assertEquals("Second change message.\n",
|
||||||
cm.get(1).getMessage());
|
cm.get(1).getMessage());
|
||||||
assertEquals(changeOwner.getAccount().getId(),
|
assertEquals(changeOwner.getAccount().getId(),
|
||||||
cm.get(0).getAuthor());
|
cm.get(1).getAuthor());
|
||||||
assertEquals(ps1, cm.get(0).getPatchSetId());
|
assertEquals(ps1, cm.get(1).getPatchSetId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user