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}