Submit: Fix NPE
isMergeable which is called both at submit time as well as when generating
the description of the submit button, may return a (Boolean)null, which
currently throws a NPE when auto unboxed into a boolean type.
Change-Id: I38875bab4fe63f8574f9e80542e5acb16e430f1c
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
index f7fab69..35fcb2e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
@@ -101,6 +101,8 @@
"Other hidden changes in this topic are not ready";
private static final String CLICK_FAILURE_OTHER_TOOLTIP =
"Clicking the button would fail for other changes in the topic";
+ private static final String CLICK_FAILURE_TOOLTIP =
+ "Clicking the button would fail.";
public enum Status {
SUBMITTED, MERGED
@@ -265,7 +267,12 @@
// TODO(dborowitz): This is ugly; consider providing a way to not read
// stored fields from the index in the first place.
c.setMergeable(null);
- if (!c.isMergeable()) {
+ Boolean mergeable = c.isMergeable();
+ if (mergeable == null) {
+ log.error("Ephemeral error checking if change is submittable");
+ return CLICK_FAILURE_TOOLTIP;
+ }
+ if (!mergeable) {
return CLICK_FAILURE_OTHER_TOOLTIP;
}
checkSubmitRule(c, c.currentPatchSet(), false);
@@ -306,7 +313,7 @@
.setVisible(false);
}
- boolean enabled;
+ Boolean enabled;
try {
enabled = cd.isMergeable();
} catch (OrmException e) {
@@ -336,7 +343,7 @@
.setTitle(Strings.emptyToNull(
submitTopicTooltip.replace(params)))
.setVisible(true)
- .setEnabled(enabled);
+ .setEnabled(Boolean.TRUE.equals(enabled));
}
} else {
RevId revId = resource.getPatchSet().getRevision();
@@ -348,7 +355,7 @@
.setLabel(label)
.setTitle(Strings.emptyToNull(titlePattern.replace(params)))
.setVisible(true)
- .setEnabled(enabled);
+ .setEnabled(Boolean.TRUE.equals(enabled));
}
}