CombinedCheckStateUpdated soy templates: Make check a field of checker
The check belongs to the checker and we should never have a check
without checker (or vice versa). Making check a field of checker makes
this clearer and improves readability. It also allows to reuse the code
that constructs the checkerData in follow-up changes.
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I5479fd9487627f485bb0514f9978f43e587e6af5
diff --git a/java/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedSender.java b/java/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedSender.java
index b4adcfd..9ab5e3a 100644
--- a/java/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedSender.java
+++ b/java/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedSender.java
@@ -91,29 +91,41 @@
soyContext.put("newCombinedCheckState", newCombinedCheckState.name());
}
- if (checker != null) {
- Map<String, String> checkerData = new HashMap<>();
- checkerData.put("uuid", checker.getUuid().get());
- checkerData.put("name", checker.getName());
- checkerData.put("repository", checker.getRepository().get());
- checker
- .getDescription()
- .ifPresent(description -> checkerData.put("description", description));
- checker.getUrl().ifPresent(url -> checkerData.put("url", url));
- soyContext.put("checker", checkerData);
+ if (checker != null && check != null) {
+ soyContext.put("checker", getCheckerData(checker, check));
}
+ }
- if (check != null) {
- Map<String, Object> checkData = new HashMap<>();
- checkData.put("checkerUuid", check.key().checkerUuid().get());
- checkData.put("change", check.key().patchSet().changeId().get());
- checkData.put("patchSet", check.key().patchSet().get());
- checkData.put("repository", check.key().repository().get());
- checkData.put("state", check.state().name());
- check.message().ifPresent(message -> checkData.put("message", message));
- check.url().ifPresent(url -> checkData.put("url", url));
- soyContext.put("check", checkData);
- }
+ /**
+ * Creates a map with the checker data that can be fed into the soy template.
+ *
+ * <p>The map keys are the names of the checker properties and the map values are the checker
+ * property values as types that are compatible with soy templates. The value of the {@code check}
+ * field is a map with the check data. The map with the check data maps the names of the check
+ * properties to the check property values as types that are compatible with soy.
+ *
+ * @param checker the checker
+ * @param check the check
+ * @return the checker data as a map that can be fed into a soy template
+ */
+ private static Map<String, Object> getCheckerData(Checker checker, Check check) {
+ Map<String, Object> checkData = new HashMap<>();
+ checkData.put("change", check.key().patchSet().changeId().get());
+ checkData.put("patchSet", check.key().patchSet().get());
+ checkData.put("repository", check.key().repository().get());
+ checkData.put("state", check.state().name());
+ check.message().ifPresent(message -> checkData.put("message", message));
+ check.url().ifPresent(url -> checkData.put("url", url));
+
+ Map<String, Object> checkerData = new HashMap<>();
+ checkerData.put("check", checkData);
+ checkerData.put("uuid", checker.getUuid().get());
+ checkerData.put("name", checker.getName());
+ checkerData.put("repository", checker.getRepository().get());
+ checker.getDescription().ifPresent(description -> checkerData.put("description", description));
+ checker.getUrl().ifPresent(url -> checkerData.put("url", url));
+
+ return checkerData;
}
@Override
diff --git a/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdated.soy b/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdated.soy
index 978146c..3e3c565 100644
--- a/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdated.soy
+++ b/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdated.soy
@@ -25,24 +25,23 @@
{@param change: ?}
{@param patchSet: ?}
{@param checker: ?}
- {@param check: ?}
{@param oldCombinedCheckState: ?}
{@param newCombinedCheckState: ?}
The combined check state has been updated to {$newCombinedCheckState} for patch set{sp}
{$patchSet.patchSetId} of this change
{if $email.changeUrl}{sp}( {$email.changeUrl} ){/if}
.{\n}
- {if $check and $checker and $check.state == 'FAILED'
+ {if $checker and $checker.check.state == 'FAILED'
and ($newCombinedCheckState == 'FAILED'
or ($newCombinedCheckState == 'WARNING' and $oldCombinedCheckState != 'FAILED'))}
{\n}
Checker {$checker.name}
{if $checker.url}{sp}( {$checker.url} ){/if}
- {sp}updated the check state to {$check.state}
- {if $check.url}{sp}( {$check.url} ){/if}
- {if $check.message}
+ {sp}updated the check state to {$checker.check.state}
+ {if $checker.check.url}{sp}( {$checker.check.url} ){/if}
+ {if $checker.check.message}
:{\n}
- {$check.message}{\n}
+ {$checker.check.message}{\n}
{else}
.{\n}
{/if}
diff --git a/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedHtml.soy b/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedHtml.soy
index 692b074..441b21e 100644
--- a/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedHtml.soy
+++ b/resources/com/google/gerrit/plugins/checks/email/CombinedCheckStateUpdatedHtml.soy
@@ -24,7 +24,6 @@
{@param email: ?}
{@param patchSet: ?}
{@param checker: ?}
- {@param check: ?}
{@param oldCombinedCheckState: ?}
{@param newCombinedCheckState: ?}
<p>
@@ -36,7 +35,7 @@
change
{/if}.
</p>
- {if $check and $checker and $check.state == 'FAILED'
+ {if $checker and $checker.check.state == 'FAILED'
and ($newCombinedCheckState == 'FAILED'
or ($newCombinedCheckState == 'WARNING' and $oldCombinedCheckState != 'FAILED'))}
<p>
@@ -47,13 +46,13 @@
<strong>{$checker.name}</strong>
{/if}
{sp}updated the check state to{sp}
- {if $check.url}
- <a href="{$check.url}">{$check.state}</a>
+ {if $checker.check.url}
+ <a href="{$checker.check.url}">{$checker.check.state}</a>
{else}
- {$check.state}
+ {$checker.check.state}
{/if}
- {if $check.message}
- :<br>{$check.message}
+ {if $checker.check.message}
+ :<br>{$checker.check.message}
{else}
.
{/if}