Return empty collections on error from repeatable ChangeFields
If the change is no longer in the changes table or the commit of
the current patch set is unavailable to be parsed FieldDefs were
returning a null collection to the index implementation. This
violates the FieldDef.Repeatable contract. A field must return a
non-null collection for iteration by the index's document builder.
Return empty collections from these two cases matching behavior
with all other repeatable fields.
Change-Id: I42217970312675b9c35350ba2eb281f5070b7a82
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeField.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeField.java
index 43b8c8d..d39fa3b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeField.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeField.java
@@ -266,7 +266,7 @@
throws OrmException {
Change c = input.change();
if (c == null) {
- return null;
+ return ImmutableSet.of();
}
Set<Integer> r = Sets.newHashSet();
if (!args.allowsDrafts && c.getStatus() == Change.Status.DRAFT) {
@@ -306,7 +306,7 @@
try {
List<FooterLine> footers = input.commitFooters();
if (footers == null) {
- return null;
+ return ImmutableSet.of();
}
return Sets.newHashSet(
args.trackingFooters.extract(footers).values());