Check if approvals array is null before iterating
When a CommentAddedEvent is received, the approvals supplier will return
null for the ApprovalAttribute[] if no approvals were contained in the
comment. Make sure to check if the array is null before iterating over
it.
Bug: Issue 12320
Change-Id: I624a186a1e17cbd02fe5eaa28cb60c594498e6b5
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
index 0a1bfd1..603a554 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
@@ -129,8 +129,9 @@
CommentAddedEvent event, Map<String, String> common) {
common.putAll(propertyAttributeExtractor.extractFrom(event.author.get(), "commenter"));
common.put("comment", event.comment);
- if (event.approvals != null) {
- for (ApprovalAttribute approvalAttribute : event.approvals.get()) {
+ ApprovalAttribute[] approvals = event.approvals.get();
+ if (approvals != null) {
+ for (ApprovalAttribute approvalAttribute : approvals) {
common.putAll(propertyAttributeExtractor.extractFrom(approvalAttribute));
}
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
index 33e8aa6..bfaa949 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
@@ -211,6 +211,8 @@
ImmutableMap.of("revision", "testRevision", "patchSetNumber", "3");
expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)).andReturn(patchSetProperties);
+ event.approvals = Suppliers.ofInstance(null);
+
event.comment = "testComment";
changeAttribute.project = "testProject";
changeAttribute.number = 176;