From 1673d7a95cbb8fbd676cef3c17912eb68678df6c Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Fri, 6 Dec 2024 13:50:35 +0100 Subject: [PATCH 1/5] Reintroduce Quarkus 3.15 compatibility --- docs/modules/ROOT/pages/includes/attributes.adoc | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/pages/includes/attributes.adoc b/docs/modules/ROOT/pages/includes/attributes.adoc index c640668e..2f66167c 100644 --- a/docs/modules/ROOT/pages/includes/attributes.adoc +++ b/docs/modules/ROOT/pages/includes/attributes.adoc @@ -1,4 +1,4 @@ -:quarkus-version: 3.17.0 +:quarkus-version: 3.15.2 :quarkus-github-app-version: 2.8.0 :github-api-javadoc-root-url: https://github-api.kohsuke.org/apidocs/org/kohsuke/github diff --git a/pom.xml b/pom.xml index 7aa90fdf..8c6d3a72 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 17 17 true - 3.17.2 + 3.15.2 3.13.0 3.3.1 3.8.1 From c87b2fc445017c2d2408a694e872e24efaa7cf76 Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Fri, 6 Dec 2024 13:51:03 +0100 Subject: [PATCH 2/5] Simplify command-airline codestart --- .../java/src/main/java/org/acme/MyGitHubBot.java | 5 +++-- .../src_main_java_ilove_quark_us_MyGitHubBot.java | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/command-airline/runtime/src/main/codestarts/quarkus/quarkiverse-github-app-command-airline-codestart/java/src/main/java/org/acme/MyGitHubBot.java b/command-airline/runtime/src/main/codestarts/quarkus/quarkiverse-github-app-command-airline-codestart/java/src/main/java/org/acme/MyGitHubBot.java index 81cdc640..6b974f46 100644 --- a/command-airline/runtime/src/main/codestarts/quarkus/quarkiverse-github-app-command-airline-codestart/java/src/main/java/org/acme/MyGitHubBot.java +++ b/command-airline/runtime/src/main/codestarts/quarkus/quarkiverse-github-app-command-airline-codestart/java/src/main/java/org/acme/MyGitHubBot.java @@ -1,6 +1,7 @@ package org.acme; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.kohsuke.github.GHEventPayload; @@ -24,12 +25,12 @@ interface Commands { static class SayHello implements Commands { @Arguments - List arguments; + List arguments = new ArrayList<>(); @Override public void run(GHEventPayload.IssueComment issueCommentPayload) throws IOException { issueCommentPayload.getIssue() - .comment(":wave: Hello " + (arguments != null ? String.join(" ", arguments) : "from Bot")); + .comment(":wave: Hello " + String.join(" ", arguments)); } } diff --git a/integration-tests/command-airline/src/test/resources/__snapshots__/CodestartTest/testContent/src_main_java_ilove_quark_us_MyGitHubBot.java b/integration-tests/command-airline/src/test/resources/__snapshots__/CodestartTest/testContent/src_main_java_ilove_quark_us_MyGitHubBot.java index a1466ac6..59c8de7e 100644 --- a/integration-tests/command-airline/src/test/resources/__snapshots__/CodestartTest/testContent/src_main_java_ilove_quark_us_MyGitHubBot.java +++ b/integration-tests/command-airline/src/test/resources/__snapshots__/CodestartTest/testContent/src_main_java_ilove_quark_us_MyGitHubBot.java @@ -1,6 +1,7 @@ package ilove.quark.us; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.kohsuke.github.GHEventPayload; @@ -24,12 +25,12 @@ interface Commands { static class SayHello implements Commands { @Arguments - List arguments; + List arguments = new ArrayList<>(); @Override public void run(GHEventPayload.IssueComment issueCommentPayload) throws IOException { issueCommentPayload.getIssue() - .comment(":wave: Hello " + (arguments != null ? String.join(" ", arguments) : "from Bot")); + .comment(":wave: Hello " + String.join(" ", arguments)); } } From de48886bfd794d0afb723b844b0d28ad2b92be13 Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Fri, 6 Dec 2024 17:41:05 +0100 Subject: [PATCH 3/5] Add more details to the documentation --- .../ROOT/pages/developer-reference.adoc | 33 +++++++++++++++++++ .../ROOT/pages/includes/attributes.adoc | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/developer-reference.adoc b/docs/modules/ROOT/pages/developer-reference.adoc index 0070ae47..b6f3b9d7 100644 --- a/docs/modules/ROOT/pages/developer-reference.adoc +++ b/docs/modules/ROOT/pages/developer-reference.adoc @@ -419,6 +419,39 @@ public class MyGitHubCustomizer implements GitHubCustomizer { } ---- +This will apply the customizations to both the application clients and the installation clients. + +However, some customizations can't be applied to the application clients such as configuring a rate limit checker. +You may customize the application clients differently by implementing `customizeApplicationClient(GitHubBuilder)`: + +[source,java] +---- +@Singleton +public class MyGitHubCustomizer implements GitHubCustomizer { + + @Override + public void customize(GitHubBuilder builder) { <1> + // call methods of the builder + } + + @Override + public void customizeApplicationClient(GitHubBuilder builder) { <2> + // call methods of the builder + } +} +---- +<1> Customize the installation clients. +<2> Customize the application clients. + +[NOTE] +.About application and installation clients +==== +A GitHub App relies on two types of GitHub clients: + +- The application client: it is authenticated as the application, it has very few permissions and is mostly used to create installation-specific tokens. +- The installation client: it is created specifically for an installation of the application (i.e. it is tied where the application is installed) and it is the client you consume in your GitHub App code. It has the permissions you defined for your GitHub App. +==== + == Configuration Reference The Quarkus GitHub App extension exposes the following configuration properties: diff --git a/docs/modules/ROOT/pages/includes/attributes.adoc b/docs/modules/ROOT/pages/includes/attributes.adoc index 2f66167c..74397b4e 100644 --- a/docs/modules/ROOT/pages/includes/attributes.adoc +++ b/docs/modules/ROOT/pages/includes/attributes.adoc @@ -4,4 +4,4 @@ :github-api-javadoc-root-url: https://github-api.kohsuke.org/apidocs/org/kohsuke/github :github-reference-documentation-root-url: https://docs.github.com/en/free-pro-team@latest/developers -:command-airline-examples-dir: ./../examples/command/airline/ \ No newline at end of file +:command-airline-examples-dir: ./../examples/command/airline/ From 626f02d02bd62ffc94dd6c54b5b408cab0498e63 Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Fri, 6 Dec 2024 17:54:07 +0100 Subject: [PATCH 4/5] Work around a bug present in JBoss Logging < 3.1 While we already fixed the issue in 3.17, we haven't backported the fix to 3.15 yet so let's introduce this workaround. --- .../ROOT/pages/includes/attributes.adoc | 2 +- .../runtime/error/DefaultErrorHandler.java | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/docs/modules/ROOT/pages/includes/attributes.adoc b/docs/modules/ROOT/pages/includes/attributes.adoc index 74397b4e..2f66167c 100644 --- a/docs/modules/ROOT/pages/includes/attributes.adoc +++ b/docs/modules/ROOT/pages/includes/attributes.adoc @@ -4,4 +4,4 @@ :github-api-javadoc-root-url: https://github-api.kohsuke.org/apidocs/org/kohsuke/github :github-reference-documentation-root-url: https://docs.github.com/en/free-pro-team@latest/developers -:command-airline-examples-dir: ./../examples/command/airline/ +:command-airline-examples-dir: ./../examples/command/airline/ \ No newline at end of file diff --git a/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java b/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java index 2cfc559a..47578ecc 100644 --- a/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java +++ b/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java @@ -1,5 +1,7 @@ package io.quarkiverse.githubapp.runtime.error; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import jakarta.enterprise.context.ApplicationScoped; @@ -30,37 +32,45 @@ public class DefaultErrorHandler implements ErrorHandler { @Override public void handleError(GitHubEvent gitHubEvent, GHEventPayload payload, Throwable t) { StringBuilder errorMessage = new StringBuilder(); - errorMessage.append("Error handling delivery " + gitHubEvent.getDeliveryId() + "\n"); + List errorMessageParameters = new ArrayList<>(); + + errorMessage.append("Error handling delivery {").append(errorMessageParameters.size()).append("}\n"); + errorMessageParameters.add(gitHubEvent.getDeliveryId()); if (t instanceof ServiceDownException || t instanceof GitHubServiceDownException) { errorMessage .append("››› GitHub APIs are not available at the moment. Have a look at https://www.githubstatus.com.\n"); } if (gitHubEvent.getRepository().isPresent()) { - errorMessage.append("› Repository: " + gitHubEvent.getRepository().get() + "\n"); + errorMessage.append("› Repository: {").append(errorMessageParameters.size()).append("}\n"); + errorMessageParameters.add(gitHubEvent.getRepository().get()); } - errorMessage.append("› Event: " + gitHubEvent.getEventAction() + "\n"); + errorMessage.append("› Event: {").append(errorMessageParameters.size()).append("}\n"); + errorMessageParameters.add(gitHubEvent.getEventAction()); if (payload != null) { Optional context = PayloadHelper.getContext(payload); if (context.isPresent()) { - errorMessage.append("› Context: " + PayloadHelper.getContext(payload).get() + "\n"); + errorMessage.append("› Context: {").append(errorMessageParameters.size()).append("}\n"); + errorMessageParameters.add(PayloadHelper.getContext(payload).get()); } } if (gitHubEvent.getAppName().isPresent()) { - errorMessage.append("› Redeliver: " + String.format(REDELIVERY_URL, gitHubEvent.getAppName().get()) + "\n"); + errorMessage.append("› Redeliver: {").append(errorMessageParameters.size()).append("}\n"); + errorMessageParameters.add(String.format(REDELIVERY_URL, gitHubEvent.getAppName().get())); } if (launchMode.isDevOrTest()) { errorMessage.append("› Payload:\n") .append("----\n") - .append(gitHubEvent.getParsedPayload().encodePrettily()).append("\n") + .append("{").append(errorMessageParameters.size()).append("}\n") .append("----\n"); + errorMessageParameters.add(gitHubEvent.getParsedPayload().encodePrettily()); } errorMessage.append("Exception"); - LOG.error(errorMessage.toString(), t); + LOG.errorv(t, errorMessage.toString(), errorMessageParameters.toArray()); } } From 064c80c495db5576b6444543fde231e75dc43c61 Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Fri, 6 Dec 2024 17:59:44 +0100 Subject: [PATCH 5/5] Reuse variable already assigned --- .../githubapp/runtime/error/DefaultErrorHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java b/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java index 47578ecc..d38b404e 100644 --- a/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java +++ b/runtime/src/main/java/io/quarkiverse/githubapp/runtime/error/DefaultErrorHandler.java @@ -51,7 +51,7 @@ public void handleError(GitHubEvent gitHubEvent, GHEventPayload payload, Throwab Optional context = PayloadHelper.getContext(payload); if (context.isPresent()) { errorMessage.append("› Context: {").append(errorMessageParameters.size()).append("}\n"); - errorMessageParameters.add(PayloadHelper.getContext(payload).get()); + errorMessageParameters.add(context.get()); } }