Add the description of the checker in CheckInfo.

When ListChecksOption.CHECKER is specified, we propogated the checker
name, status, and blocking conditions to CheckInfo in change-id:
Ieeffc4c51d9d0f. Now checker decsription is also propogated to CheckInfo.

Change-Id: Ia29f551deb389c52cb7e7a8cb3e113412a58f845
diff --git a/java/com/google/gerrit/plugins/checks/CheckJson.java b/java/com/google/gerrit/plugins/checks/CheckJson.java
index e4199e9..074d4cc 100644
--- a/java/com/google/gerrit/plugins/checks/CheckJson.java
+++ b/java/com/google/gerrit/plugins/checks/CheckJson.java
@@ -89,6 +89,7 @@
                 info.checkerName = checker.getName().orElse(null);
                 info.checkerStatus = checker.getStatus();
                 info.blocking = checker.getBlockingConditions();
+                info.checkerDescription = checker.getDescription().orElse(null);
               });
     } catch (ConfigInvalidException e) {
       logger.atWarning().withCause(e).log("skipping invalid checker %s", checkerUuid);
diff --git a/java/com/google/gerrit/plugins/checks/api/CheckInfo.java b/java/com/google/gerrit/plugins/checks/api/CheckInfo.java
index 77cbdef..d0d5c38 100644
--- a/java/com/google/gerrit/plugins/checks/api/CheckInfo.java
+++ b/java/com/google/gerrit/plugins/checks/api/CheckInfo.java
@@ -56,6 +56,9 @@
   /** Blocking conditions that apply to this check. */
   public Set<BlockingCondition> blocking;
 
+  /** Description of the checker that produced this check */
+  public String checkerDescription;
+
   @Override
   public boolean equals(Object o) {
     if (!(o instanceof CheckInfo)) {
@@ -75,7 +78,8 @@
         && Objects.equals(other.updated, updated)
         && Objects.equals(other.checkerName, checkerName)
         && Objects.equals(other.checkerStatus, checkerStatus)
-        && Objects.equals(other.blocking, blocking);
+        && Objects.equals(other.blocking, blocking)
+        && Objects.equals(other.checkerDescription, checkerDescription);
   }
 
   @Override
@@ -94,7 +98,8 @@
         updated,
         checkerName,
         checkerStatus,
-        blocking);
+        blocking,
+        checkerDescription);
   }
 
   @Override
@@ -114,6 +119,7 @@
         .add("checkerName", checkerName)
         .add("checkerStatus", checkerStatus)
         .add("blocking", blocking)
+        .add("checkerDescription", checkerDescription)
         .toString();
   }
 }
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
index 9e2a066..ecd2596 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
@@ -89,7 +89,12 @@
   @Test
   public void getCheckWithOptions() throws Exception {
     CheckerUuid checkerUuid =
-        checkerOperations.newChecker().repository(project).name("My Checker").create();
+        checkerOperations
+            .newChecker()
+            .repository(project)
+            .name("My Checker")
+            .description("Description")
+            .create();
 
     CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
     checkOperations.newCheck(checkKey).state(CheckState.RUNNING).upsert();
@@ -99,7 +104,7 @@
     expectedCheckInfo.checkerName = "My Checker";
     expectedCheckInfo.checkerStatus = CheckerStatus.ENABLED;
     expectedCheckInfo.blocking = ImmutableSortedSet.of();
-
+    expectedCheckInfo.checkerDescription = "Description";
     assertThat(getCheckInfo(patchSetId, checkerUuid, ListChecksOption.CHECKER))
         .isEqualTo(expectedCheckInfo);
   }
diff --git a/resources/Documentation/rest-api-checks.md b/resources/Documentation/rest-api-checks.md
index 4e30e94..65ac15c 100644
--- a/resources/Documentation/rest-api-checks.md
+++ b/resources/Documentation/rest-api-checks.md
@@ -161,22 +161,23 @@
 ### <a id="check-info"> CheckInfo
 The `CheckInfo` entity describes a check.
 
-| Field Name        |          | Description |
-| ----------------- | -------- | ----------- |
-| `repository`      |          | The repository name that this check applies to.
-| `change_number`   |          | The change number that this check applies to.
-| `patch_set_id`    |          | The patch set that this check applies to.
-| `checker_uuid`    |          | The [UUID](./rest-api-checkers.md#checker-id) of the checker that reported this check.
-| `state`           |          | The state as string-serialized form of [CheckState](#check-state)
-| `message`         | optional | Short message explaining the check state.
-| `url`             | optional | A fully-qualified URL pointing to the result of the check on the checker's infrastructure.
-| `started`         | optional | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check started processing.
-| `finished`        | optional | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check finished processing.
-| `created`         |          | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check was created.
-| `updated`         |          | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check was last updated.
-| `checker_name`    | optional | The name of the checker that produced this check.<br />Only set if [checker details](#option-checker) are requested.
-| `checker_status`  | optional | The [status](rest-api-checkers.md#checker-info) of the checker that produced this check.<br />Only set if [checker details](#option-checker) are requested.
-| `blocking`        | optional | Set of [blocking conditions](rest-api-checkers.md#blocking-conditions) that apply to this checker.<br />Only set if [checker details](#option-checker) are requested.
+| Field Name            |          | Description |
+| --------------------- | -------- | ----------- |
+| `repository`          |          | The repository name that this check applies to.
+| `change_number`       |          | The change number that this check applies to.
+| `patch_set_id`        |          | The patch set that this check applies to.
+| `checker_uuid`        |          | The [UUID](./rest-api-checkers.md#checker-id) of the checker that reported this check.
+| `state`               |          | The state as string-serialized form of [CheckState](#check-state)
+| `message`             | optional | Short message explaining the check state.
+| `url`                 | optional | A fully-qualified URL pointing to the result of the check on the checker's infrastructure.
+| `started`             | optional | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check started processing.
+| `finished`            | optional | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check finished processing.
+| `created`             |          | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check was created.
+| `updated`             |          | The [timestamp](../../../Documentation/rest-api.html#timestamp) of when the check was last updated.
+| `checker_name`        | optional | The name of the checker that produced this check.<br />Only set if [checker details](#option-checker) are requested.
+| `checker_status`      | optional | The [status](rest-api-checkers.md#checker-info) of the checker that produced this check.<br />Only set if [checker details](#option-checker) are requested.
+| `blocking`            | optional | Set of [blocking conditions](rest-api-checkers.md#blocking-conditions) that apply to this checker.<br />Only set if [checker details](#option-checker) are requested.
+| `checker_description` | optional | The description of the checker that reported this check.
 
 ### <a id="check-input"> CheckInput
 The `CheckInput` entity contains information for creating or updating a check.