diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java index 37094fda3b..dc77ada784 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/AbstractChangeNotes.java @@ -29,19 +29,15 @@ import java.io.IOException; public abstract class AbstractChangeNotes extends VersionedMetaData { private boolean loaded; protected final GitRepositoryManager repoManager; - private final Change change; + private final Change.Id changeId; - AbstractChangeNotes(GitRepositoryManager repoManager, Change change) { + AbstractChangeNotes(GitRepositoryManager repoManager, Change.Id changeId) { this.repoManager = repoManager; - this.change = new Change(change); + this.changeId = changeId; } public Change.Id getChangeId() { - return change.getId(); - } - - public Change getChange() { - return change; + return changeId; } public T load() throws OrmException { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java index 754fdea87b..694784911d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java @@ -91,8 +91,8 @@ public class ChangeDraftUpdate extends AbstractChangeUpdate { IdentifiedUser user = (IdentifiedUser) ctl.getCurrentUser(); this.accountId = user.getAccountId(); this.changeNotes = getChangeNotes().load(); - this.draftNotes = draftNotesFactory.create(ctl.getChange(), - accountId).load(); + this.draftNotes = draftNotesFactory.create(ctl.getChange().getId(), + user.getAccountId()).load(); this.upsertComments = Lists.newArrayList(); this.deleteComments = Lists.newArrayList(); 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 5f7b200035..f1e68a5e47 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 @@ -490,6 +490,7 @@ public class ChangeNotes extends AbstractChangeNotes { } } + private final Change change; private ImmutableListMultimap approvals; private ImmutableSetMultimap reviewers; private ImmutableList submitRecords; @@ -505,8 +506,13 @@ public class ChangeNotes extends AbstractChangeNotes { @VisibleForTesting public ChangeNotes(GitRepositoryManager repoManager, AllUsersNameProvider allUsersProvider, Change change) { - super(repoManager, change); + super(repoManager, change.getId()); this.allUsers = allUsersProvider.get(); + this.change = new Change(change); + } + + public Change getChange() { + return change; } public ImmutableListMultimap getApprovals() { @@ -565,7 +571,7 @@ public class ChangeNotes extends AbstractChangeNotes { if (draftCommentNotes == null || !author.equals(draftCommentNotes.getAuthor())) { draftCommentNotes = new DraftCommentNotes(repoManager, allUsers, - getChange(), author); + getChangeId(), author); draftCommentNotes.load(); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java index 59cf52b855..918f9234e1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java @@ -62,8 +62,8 @@ public class DraftCommentNotes extends AbstractChangeNotes { this.draftsProject = allUsers.get(); } - public DraftCommentNotes create(Change change, Account.Id accountId) { - return new DraftCommentNotes(repoManager, draftsProject, change, + public DraftCommentNotes create(Change.Id changeId, Account.Id accountId) { + return new DraftCommentNotes(repoManager, draftsProject, changeId, accountId); } } @@ -79,10 +79,10 @@ public class DraftCommentNotes extends AbstractChangeNotes { private final Multimap draftPsComments; private NoteMap noteMap; - private Parser(Change change, RevWalk walk, ObjectId tip, + private Parser(Change.Id changeId, RevWalk walk, ObjectId tip, GitRepositoryManager repoManager, AllUsersName draftsProject, Account.Id author) throws RepositoryNotFoundException, IOException { - this.changeId = change.getId(); + this.changeId = changeId; this.walk = walk; this.tip = tip; this.repo = repoManager.openRepository(draftsProject); @@ -109,8 +109,8 @@ public class DraftCommentNotes extends AbstractChangeNotes { private NoteMap noteMap; DraftCommentNotes(GitRepositoryManager repoManager, - AllUsersName draftsProject, Change change, Account.Id author) { - super(repoManager, change); + AllUsersName draftsProject, Change.Id changeId, Account.Id author) { + super(repoManager, changeId); this.draftsProject = draftsProject; this.author = author; @@ -167,7 +167,7 @@ public class DraftCommentNotes extends AbstractChangeNotes { } RevWalk walk = new RevWalk(reader); - Parser parser = new Parser(getChange(), walk, rev, repoManager, + Parser parser = new Parser(getChangeId(), walk, rev, repoManager, draftsProject, author); parser.parseDraftComments();