Mark mergeTip as Nullable in ChangeMessageModifier
This interface allows plugins to modify commit messages for new commits.
In some cases mergeTip can be null, for example if the destination
branch does not exist. Marking this explicitly with Nullable to make
this signal clear to implementers.
Bug: Google b/204848102
Change-Id: If727101cee359cea9ca120b0554344dcac4921df
diff --git a/java/com/google/gerrit/server/git/ChangeMessageModifier.java b/java/com/google/gerrit/server/git/ChangeMessageModifier.java
index 580c0b9..3424477 100644
--- a/java/com/google/gerrit/server/git/ChangeMessageModifier.java
+++ b/java/com/google/gerrit/server/git/ChangeMessageModifier.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
+import com.google.gerrit.common.Nullable;
import com.google.gerrit.entities.BranchNameKey;
import com.google.gerrit.extensions.annotations.ExtensionPoint;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -42,10 +43,13 @@
* @param original the commit of the change being submitted. <b>Note that its commit message may
* be different than newCommitMessage argument.</b>
* @param mergeTip the current HEAD of the destination branch, which will be a parent of a new
- * commit being generated
+ * commit being generated. mergeTip can be null if the destination branch does not yet exist.
* @param destination the branch onto which the change is being submitted
* @return a new not null commit message.
*/
String onSubmit(
- String newCommitMessage, RevCommit original, RevCommit mergeTip, BranchNameKey destination);
+ String newCommitMessage,
+ RevCommit original,
+ @Nullable RevCommit mergeTip,
+ BranchNameKey destination);
}
diff --git a/java/com/google/gerrit/server/git/MergeUtil.java b/java/com/google/gerrit/server/git/MergeUtil.java
index 3a4d407..99cb9b0 100644
--- a/java/com/google/gerrit/server/git/MergeUtil.java
+++ b/java/com/google/gerrit/server/git/MergeUtil.java
@@ -31,6 +31,7 @@
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.FooterConstants;
+import com.google.gerrit.common.Nullable;
import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.BooleanProjectConfig;
import com.google.gerrit.entities.BranchNameKey;
@@ -630,7 +631,7 @@
* @return new message
*/
public String createCommitMessageOnSubmit(
- RevCommit n, RevCommit mergeTip, ChangeNotes notes, PatchSet.Id id) {
+ RevCommit n, @Nullable RevCommit mergeTip, ChangeNotes notes, PatchSet.Id id) {
return commitMessageGenerator.generate(
n, mergeTip, notes.getChange().getDest(), createDetailedCommitMessage(n, notes, id));
}
diff --git a/java/com/google/gerrit/server/git/PluggableCommitMessageGenerator.java b/java/com/google/gerrit/server/git/PluggableCommitMessageGenerator.java
index 804a218..1f5a330 100644
--- a/java/com/google/gerrit/server/git/PluggableCommitMessageGenerator.java
+++ b/java/com/google/gerrit/server/git/PluggableCommitMessageGenerator.java
@@ -18,6 +18,7 @@
import static java.util.Objects.requireNonNull;
import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.common.Nullable;
import com.google.gerrit.entities.BranchNameKey;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.registration.Extension;
@@ -41,7 +42,10 @@
* modify the message.
*/
public String generate(
- RevCommit original, RevCommit mergeTip, BranchNameKey dest, String originalMessage) {
+ RevCommit original,
+ @Nullable RevCommit mergeTip,
+ BranchNameKey dest,
+ String originalMessage) {
requireNonNull(original.getRawBuffer());
if (mergeTip != null) {
requireNonNull(mergeTip.getRawBuffer());