Populate the owner field of a change from notedb
The change owner is set to the author of the first commit on the notes
branch.
Change-Id: I9728cb13051bc1e6011f36cc4b81ba14c7894df3
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java
index 55b2574..9b6581a 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java
@@ -543,6 +543,10 @@
return owner;
}
+ public void setOwner(Account.Id owner) {
+ this.owner = owner;
+ }
+
public Branch.NameKey getDest() {
return dest;
}
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 925da3e..bb5a127 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
@@ -268,6 +268,7 @@
change.setTopic(Strings.emptyToNull(parser.topic));
change.setCreatedOn(parser.createdOn);
change.setLastUpdatedOn(parser.lastUpdatedOn);
+ change.setOwner(parser.ownerId);
if (parser.hashtags != null) {
hashtags = ImmutableSet.copyOf(parser.hashtags);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotesParser.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotesParser.java
index bb61103..6ef4d0f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotesParser.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotesParser.java
@@ -83,6 +83,7 @@
Set<String> hashtags;
Timestamp createdOn;
Timestamp lastUpdatedOn;
+ Account.Id ownerId;
private final Change.Id changeId;
private final ObjectId tip;
@@ -164,6 +165,7 @@
}
PatchSet.Id psId = parsePatchSetId(commit);
Account.Id accountId = parseIdent(commit);
+ ownerId = accountId;
parseChangeMessage(psId, accountId, commit);
if (topic == null) {
topic = parseTopic(commit);
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java
index 278f72a..c1fa916 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/notedb/ChangeNotesTest.java
@@ -484,6 +484,21 @@
}
@Test
+ public void ownerChangeNotes() throws Exception {
+ Change c = newChange();
+
+ assertThat(newNotes(c).getChange().getOwner()).isEqualTo(
+ changeOwner.getAccountId());
+
+ // An update doesn't affect the owner
+ ChangeUpdate update = newUpdate(c, otherUser);
+ update.setTopic("topic"); // Change something to get a new commit.
+ update.commit();
+ assertThat(newNotes(c).getChange().getOwner()).isEqualTo(
+ changeOwner.getAccountId());
+ }
+
+ @Test
public void createdOnChangeNotes() throws Exception {
Change c = newChange();