From f5b38780e8af5211109df7cf8b3fb2f7b0f47f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Basl=C3=A9?= Date: Tue, 25 Feb 2020 11:13:01 +0100 Subject: [PATCH] Reactor: Fix gh mention when commit has different author vs committer --- .../reactor/GenerateReleaseNotesTask.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/projects/reactor/src/main/java/releaser/reactor/GenerateReleaseNotesTask.java b/projects/reactor/src/main/java/releaser/reactor/GenerateReleaseNotesTask.java index e1ae0325..d82547b4 100644 --- a/projects/reactor/src/main/java/releaser/reactor/GenerateReleaseNotesTask.java +++ b/projects/reactor/src/main/java/releaser/reactor/GenerateReleaseNotesTask.java @@ -37,6 +37,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.json.JsonObject; +import javax.json.JsonValue; import com.jcabi.github.Coordinates; import com.jcabi.github.Github; @@ -405,7 +406,23 @@ public class GenerateReleaseNotesTask RepoCommit.Smart smartCommit = new RepoCommit.Smart(dumbCommit); try { JsonObject commitJson = smartCommit.json(); - return "@" + commitJson.getJsonObject("author").getString("login"); + JsonValue.ValueType authorType = commitJson.get("author").getValueType(); + if (authorType == JsonValue.ValueType.OBJECT) { + return "@" + commitJson.getJsonObject("author").getString("login"); + } + else if (authorType == JsonValue.ValueType.NULL) { + // assume author+committer, look under commit.author.name + if (commitJson.containsKey("commit") + && commitJson.getJsonObject("commit").containsKey("author")) { + return "@" + commitJson.getJsonObject("commit") + .getJsonObject("author").getString("name"); + } + } + // in case unexpected json, output the "sha", "commit", "author" and "committer" + return "@RAW{\"sha\", " + commitJson.get("sha") + ", \"author\", \"" + + commitJson.get("author") + ", \"committer\", \"" + + commitJson.get("committer") + ", \"commit\", \"" + + commitJson.get("commit") + "}"; } catch (IOException e) { return null;