RepoContext: Add convenience method for addRefUpdate
Most callers are immediately constructing a ReceiveCommand, so this
variant reduces boilerplate. A few callers want to maintain a reference
to the ReceiveCommand, so keep the other variant around.
Change-Id: Ia6cb0f7fc63eba380a225c671def41db3caffc44
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
index 63ea2df..f7fe4f1 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/ConsistencyCheckerIT.java
@@ -67,7 +67,6 @@
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.junit.Before;
import org.junit.Test;
@@ -919,7 +918,7 @@
new BatchUpdateOp() {
@Override
public void updateRepo(RepoContext ctx) throws IOException {
- ctx.addRefUpdate(new ReceiveCommand(oldId, newId, dest));
+ ctx.addRefUpdate(oldId, newId, dest);
}
@Override
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/NoteDbOnlyIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/NoteDbOnlyIT.java
index 9850f2e..ada17b6 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/NoteDbOnlyIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/NoteDbOnlyIT.java
@@ -40,7 +40,6 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.junit.Before;
import org.junit.Test;
@@ -71,7 +70,7 @@
public void updateRepo(RepoContext ctx) throws IOException {
ObjectId oldId = ctx.getRepoView().getRef(backup).orElse(ObjectId.zeroId());
newId = ctx.getRepoView().getRef(master).get();
- ctx.addRefUpdate(new ReceiveCommand(oldId, newId, backup));
+ ctx.addRefUpdate(oldId, newId, backup);
}
@Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java
index 08473a0..8ac89ae 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java
@@ -341,7 +341,7 @@
return;
}
if (updateRefCommand == null) {
- ctx.addRefUpdate(new ReceiveCommand(ObjectId.zeroId(), commitId, psId.toRefName()));
+ ctx.addRefUpdate(ObjectId.zeroId(), commitId, psId.toRefName());
} else {
ctx.addRefUpdate(updateRefCommand);
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java
index f3df8e8..49d7bae 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java
@@ -76,7 +76,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -504,8 +503,7 @@
new BatchUpdateOp() {
@Override
public void updateRepo(RepoContext ctx) throws IOException {
- ctx.addRefUpdate(
- new ReceiveCommand(commit, ObjectId.zeroId(), psIdToDelete.toRefName()));
+ ctx.addRefUpdate(commit, ObjectId.zeroId(), psIdToDelete.toRefName());
}
});
if (!reuseOldPsId) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteChangeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteChangeOp.java
index c7cfef9..992313d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteChangeOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteChangeOp.java
@@ -43,7 +43,6 @@
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.eclipse.jgit.transport.ReceiveCommand;
class DeleteChangeOp implements BatchUpdateOp {
static boolean allowDrafts(Config cfg) {
@@ -173,7 +172,7 @@
String prefix = new PatchSet.Id(id, 1).toRefName();
prefix = prefix.substring(0, prefix.length() - 1);
for (Map.Entry<String, ObjectId> e : ctx.getRepoView().getRefs(prefix).entrySet()) {
- ctx.addRefUpdate(new ReceiveCommand(e.getValue(), ObjectId.zeroId(), prefix + e.getKey()));
+ ctx.addRefUpdate(e.getValue(), ObjectId.zeroId(), prefix + e.getKey());
}
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java
index 222230b..a4db8c5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java
@@ -47,7 +47,6 @@
import java.util.Collection;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.transport.ReceiveCommand;
@Singleton
public class DeleteDraftPatchSet
@@ -133,10 +132,9 @@
return;
}
ctx.addRefUpdate(
- new ReceiveCommand(
- ObjectId.fromString(patchSet.getRevision().get()),
- ObjectId.zeroId(),
- patchSet.getRefName()));
+ ObjectId.fromString(patchSet.getRevision().get()),
+ ObjectId.zeroId(),
+ patchSet.getRefName());
}
private void deleteDraftPatchSet(PatchSet patchSet, ChangeContext ctx) throws OrmException {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java
index 1512976..32dbcda 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java
@@ -207,9 +207,7 @@
public void updateRepo(RepoContext ctx)
throws AuthException, ResourceConflictException, IOException, OrmException {
validate(ctx);
- ctx.addRefUpdate(
- new ReceiveCommand(
- ObjectId.zeroId(), commitId, getPatchSetId().toRefName(), ReceiveCommand.Type.CREATE));
+ ctx.addRefUpdate(ObjectId.zeroId(), commitId, getPatchSetId().toRefName());
}
@Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java
index 92333c6..1e11968 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java
@@ -59,7 +59,6 @@
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.eclipse.jgit.transport.ReceiveCommand;
/**
* Utility functions to manipulate change edits.
@@ -223,9 +222,7 @@
new BatchUpdateOp() {
@Override
public void updateRepo(RepoContext ctx) throws Exception {
- ctx.addRefUpdate(
- new ReceiveCommand(
- edit.getEditCommit().copy(), ObjectId.zeroId(), edit.getRefName()));
+ ctx.addRefUpdate(edit.getEditCommit().copy(), ObjectId.zeroId(), edit.getRefName());
}
});
bu.execute();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java
index 7bb8271..f504c45 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java
@@ -71,7 +71,6 @@
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.transport.PushCertificate;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -211,7 +210,7 @@
}
if (updateRef) {
- ctx.addRefUpdate(new ReceiveCommand(ObjectId.zeroId(), commitId, patchSetId.toRefName()));
+ ctx.addRefUpdate(ObjectId.zeroId(), commitId, patchSetId.toRefName());
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
index 7c236e1..93aea89 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
@@ -63,7 +63,6 @@
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.transport.RefSpec;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -82,7 +81,7 @@
public void updateRepo(RepoContext ctx) throws Exception {
CodeReviewCommit c = composeGitlinksCommit(branch);
if (c != null) {
- ctx.addRefUpdate(new ReceiveCommand(c.getParent(0), c, branch.get()));
+ ctx.addRefUpdate(c.getParent(0), c, branch.get());
addBranchTip(branch, c);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java
index 879ca0e..49399ef 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java
@@ -37,7 +37,6 @@
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.ReceiveCommand;
public class CherryPick extends SubmitStrategy {
@@ -135,7 +134,7 @@
args.mergeTip.moveTipTo(newCommit, newCommit);
args.commitStatus.put(newCommit);
- ctx.addRefUpdate(new ReceiveCommand(ObjectId.zeroId(), newCommit, psId.toRefName()));
+ ctx.addRefUpdate(ObjectId.zeroId(), newCommit, psId.toRefName());
patchSetInfo = args.patchSetInfoFactory.get(ctx.getRevWalk(), newCommit, psId);
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseSubmitStrategy.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseSubmitStrategy.java
index 18b4173..a156a90 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseSubmitStrategy.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseSubmitStrategy.java
@@ -43,7 +43,6 @@
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.ReceiveCommand;
/** This strategy covers RebaseAlways and RebaseIfNecessary ones. */
public class RebaseSubmitStrategy extends SubmitStrategy {
@@ -156,8 +155,7 @@
toMerge.setStatusCode(SKIPPED_IDENTICAL_TREE);
return;
}
- ctx.addRefUpdate(
- new ReceiveCommand(ObjectId.zeroId(), newCommit, newPatchSetId.toRefName()));
+ ctx.addRefUpdate(ObjectId.zeroId(), newCommit, newPatchSetId.toRefName());
} else {
// Stale read of patch set is ok; see comments in RebaseChangeOp.
PatchSet origPs =
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/update/RepoContext.java b/gerrit-server/src/main/java/com/google/gerrit/server/update/RepoContext.java
index 3c1e896..e635da9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/update/RepoContext.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/update/RepoContext.java
@@ -14,10 +14,12 @@
package com.google.gerrit.server.update;
-import java.io.IOException;
+import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.transport.ReceiveCommand;
+import java.io.IOException;
+
/** Context for performing the {@link BatchUpdateOp#updateRepo} phase. */
public interface RepoContext extends Context {
/**
@@ -31,10 +33,28 @@
/**
* Add a command to the pending list of commands.
*
- * <p>This method is the only way of updating refs in the repository from a {@link BatchUpdateOp}.
+ * <p>Adding commands to the {@code RepoContext} is the only way of updating refs in the
+ * repository from a {@link BatchUpdateOp}.
*
* @param cmd ref update command.
* @throws IOException if an error occurred opening the repo.
*/
void addRefUpdate(ReceiveCommand cmd) throws IOException;
+
+ /**
+ * Add a command to the pending list of commands.
+ *
+ * <p>Adding commands to the {@code RepoContext} is the only way of updating refs in the
+ * repository from a {@link BatchUpdateOp}.
+ *
+ * @param oldId the old object ID; must not be null. Use {@link ObjectId#zeroId()} for ref
+ * creation.
+ * @param newId the new object ID; must not be null. Use {@link ObjectId#zeroId()} for ref
+ * deletion.
+ * @param refName the ref name.
+ * @throws IOException if an error occurred opening the repo.
+ */
+ default void addRefUpdate(ObjectId oldId, ObjectId newId, String refName) throws IOException {
+ addRefUpdate(new ReceiveCommand(oldId, newId, refName));
+ }
}
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/update/BatchUpdateTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/update/BatchUpdateTest.java
index 5e82836..892a9ff 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/update/BatchUpdateTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/update/BatchUpdateTest.java
@@ -39,7 +39,6 @@
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.ReceiveCommand;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -122,9 +121,7 @@
new RepoOnlyOp() {
@Override
public void updateRepo(RepoContext ctx) throws Exception {
- ctx.addRefUpdate(
- new ReceiveCommand(
- masterCommit.getId(), branchCommit.getId(), "refs/heads/master"));
+ ctx.addRefUpdate(masterCommit.getId(), branchCommit.getId(), "refs/heads/master");
}
});
bu.execute();