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;