Revert "ChangeNotes: Remove unused method"
This reverts commit d98cd71670987da0a1dce484034aeb3be7a4d39d.
Also add MODULE_GIT_REFS_FILTER to the list of the UsedAt values
and add one validation test.
Reason for revert: This was used by the git-refs-filter and caused Issue 16465
Bug: Issue 16465
Release-Notes: Restores the ChangeNotes.Factory.createChecked with an open Repository object
Forward-Compatible: checked
Change-Id: I7f4e4deadef0114ec148bd07a9127340a4ca9460
diff --git a/java/com/google/gerrit/common/UsedAt.java b/java/com/google/gerrit/common/UsedAt.java
index de71b3c..1b87f32 100644
--- a/java/com/google/gerrit/common/UsedAt.java
+++ b/java/com/google/gerrit/common/UsedAt.java
@@ -45,6 +45,7 @@
PLUGIN_MULTI_SITE,
PLUGIN_SERVICEUSER,
PLUGIN_WEBSESSION_FLATFILE,
+ MODULE_GIT_REFS_FILTER
}
/** Reference to the project that uses the method annotated with this annotation. */
diff --git a/java/com/google/gerrit/server/notedb/ChangeNotes.java b/java/com/google/gerrit/server/notedb/ChangeNotes.java
index a342686..dc76994 100644
--- a/java/com/google/gerrit/server/notedb/ChangeNotes.java
+++ b/java/com/google/gerrit/server/notedb/ChangeNotes.java
@@ -37,6 +37,7 @@
import com.google.common.flogger.FluentLogger;
import com.google.errorprone.annotations.FormatMethod;
import com.google.gerrit.common.Nullable;
+import com.google.gerrit.common.UsedAt;
import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.AttentionSetUpdate;
import com.google.gerrit.entities.BranchNameKey;
@@ -138,6 +139,25 @@
return createChecked(c.getProject(), c.getId());
}
+ /**
+ * Load the change-notes associated to a project/change-id using an existing open repository
+ *
+ * @param repo existing open repository
+ * @param project project associated with the repository
+ * @param changeId change-id associated with the change-notes to load
+ * @param metaRevId version of the change-id to load, null for loading the latest
+ * @return change-notes object for the change
+ */
+ @UsedAt(UsedAt.Project.MODULE_GIT_REFS_FILTER)
+ public ChangeNotes createChecked(
+ Repository repo,
+ Project.NameKey project,
+ Change.Id changeId,
+ @Nullable ObjectId metaRevId) {
+ Change change = newChange(project, changeId);
+ return new ChangeNotes(args, change, true, null, metaRevId).load(repo);
+ }
+
public ChangeNotes createChecked(
Project.NameKey project, Change.Id changeId, @Nullable ObjectId metaRevId) {
Change change = newChange(project, changeId);
diff --git a/javatests/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java b/javatests/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java
index e8cc6b4..4ad18b5 100644
--- a/javatests/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java
+++ b/javatests/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java
@@ -126,6 +126,8 @@
protected Injector injector;
private String systemTimeZone;
+ @Inject protected ChangeNotes.Factory changeNotesFactory;
+
@Before
public void setUpTestEnvironment() throws Exception {
setupTestPrerequisites();
diff --git a/javatests/com/google/gerrit/server/notedb/OpenRepoTest.java b/javatests/com/google/gerrit/server/notedb/OpenRepoTest.java
index 507b71f..323aee9 100644
--- a/javatests/com/google/gerrit/server/notedb/OpenRepoTest.java
+++ b/javatests/com/google/gerrit/server/notedb/OpenRepoTest.java
@@ -244,6 +244,19 @@
}
}
+ @Test
+ public void canCreateChangeNotesFromOpenRepoAndChangeid() throws Exception {
+ try (OpenRepo openRepo = openRepo()) {
+ Change change = newChange();
+
+ ChangeNotes changeNotes =
+ changeNotesFactory.createChecked(openRepo.repo, project, change.getId(), null);
+
+ assertThat(changeNotes).isNotNull();
+ assertThat(changeNotes.getChangeId()).isEqualTo(change.getId());
+ }
+ }
+
private void addToAttentionSet(ChangeUpdate update) {
AttentionSetUpdate attentionSetUpdate =
AttentionSetUpdate.createForWrite(