From d680e8e996c67b6378dd071f483af4eeb66a5009 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Fri, 5 Jun 2026 17:02:10 +0200 Subject: [PATCH] dbeaver/pro#9128 add badges to rest api doc --- openapi-maven-plugin/pom.xml | 2 +- .../configuration/ApiConfiguration.java | 8 +++++ .../configuration/CommonApiConfiguration.java | 36 +++++++++++++++++++ .../io/github/kbuntrock/yaml/YamlWriter.java | 9 +++++ .../kbuntrock/yaml/model/Operation.java | 11 ++++++ .../it/BasicIT/nominal_test_case/pom.xml | 2 +- .../BasicIT/nominal_test_case_jaxrs/pom.xml | 2 +- .../kbuntrock/it/BasicIT/sealed_class/pom.xml | 2 +- 8 files changed, 68 insertions(+), 4 deletions(-) diff --git a/openapi-maven-plugin/pom.xml b/openapi-maven-plugin/pom.xml index 8f28542d..09af2207 100644 --- a/openapi-maven-plugin/pom.xml +++ b/openapi-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-maven-plugin - 0.0.31-dbeaver + 0.0.32-dbeaver maven-plugin openapi-maven-plugin Maven Plugin diff --git a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/ApiConfiguration.java b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/ApiConfiguration.java index bca9faf8..0fc05c96 100644 --- a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/ApiConfiguration.java +++ b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/ApiConfiguration.java @@ -68,6 +68,8 @@ public ApiConfiguration mergeWithCommonApiConfiguration(final CommonApiConfigura merged.pathPrefix = copy.pathPrefix; merged.fileFormat = copy.fileFormat; merged.loopbackOperationName = copy.loopbackOperationName; + merged.badges = copy.badges; + merged.badgeColor = copy.badgeColor; merged.enumListDescriptionEnabled = copy.enumListDescriptionEnabled; merged.enumNameExtensionEnabled = copy.enumNameExtensionEnabled; merged.enumNameExtensionValue = copy.enumNameExtensionValue; @@ -127,6 +129,12 @@ public ApiConfiguration mergeWithCommonApiConfiguration(final CommonApiConfigura if(loopbackOperationName != null) { merged.setLoopbackOperationName(loopbackOperationName); } + if(badges != null) { + merged.setBadges(badges); + } + if(badgeColor != null) { + merged.setBadgeColor(badgeColor); + } if(enumListDescriptionEnabled != null) { merged.setEnumListDescriptionEnabled(enumListDescriptionEnabled); } diff --git a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/CommonApiConfiguration.java b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/CommonApiConfiguration.java index 4d2e9c76..a8509f27 100644 --- a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/CommonApiConfiguration.java +++ b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/configuration/CommonApiConfiguration.java @@ -71,6 +71,18 @@ public class CommonApiConfiguration { @Parameter protected Boolean loopbackOperationName; + /** + * If true, expose the operationId as an "x-badges" extension on every operation. + */ + @Parameter + protected Boolean badges; + + /** + * Color used for the generated x-badges entry. Defaults "grey" + */ + @Parameter + protected String badgeColor; + /** * Write in the description the complete list of enum value / description */ @@ -171,6 +183,8 @@ public CommonApiConfiguration(final CommonApiConfiguration commonApiConfiguratio this.pathPrefix = commonApiConfiguration.pathPrefix; this.fileFormat = commonApiConfiguration.fileFormat; this.loopbackOperationName = commonApiConfiguration.loopbackOperationName; + this.badges = commonApiConfiguration.badges; + this.badgeColor = commonApiConfiguration.badgeColor; this.enumListDescriptionEnabled = commonApiConfiguration.enumListDescriptionEnabled; this.enumNameExtensionEnabled = commonApiConfiguration.enumNameExtensionEnabled; this.enumNameExtensionValue = commonApiConfiguration.enumNameExtensionValue; @@ -231,6 +245,12 @@ public void initDefaultValues() { if(loopbackOperationName == null) { loopbackOperationName = true; } + if(badges == null) { + badges = false; + } + if(badgeColor == null) { + badgeColor = "grey"; + } if(enumListDescriptionEnabled == null) { enumListDescriptionEnabled = true; } @@ -346,6 +366,22 @@ public void setLoopbackOperationName(final boolean loopbackOperationName) { this.loopbackOperationName = loopbackOperationName; } + public boolean isBadges() { + return badges != null && badges; + } + + public void setBadges(final boolean badges) { + this.badges = badges; + } + + public String getBadgeColor() { + return badgeColor; + } + + public void setBadgeColor(final String badgeColor) { + this.badgeColor = badgeColor; + } + public Boolean getEnumListDescriptionEnabled() { return enumListDescriptionEnabled; } diff --git a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/YamlWriter.java b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/YamlWriter.java index fe503eb9..a884783f 100644 --- a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/YamlWriter.java +++ b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/YamlWriter.java @@ -280,6 +280,15 @@ private Map> createPaths(final TagLibrary tagLibr operation.setOperationId(operation.getOperationId() + nbEncounteredOperationId); } + if(apiConfiguration.isBadges()) { + Map badge = new LinkedHashMap<>(); + badge.put("name", operation.getOperationId()); + badge.put("color", apiConfiguration.getBadgeColor()); + List> badgeList = new ArrayList<>(); + badgeList.add(badge); + operation.setBadges(badgeList); + } + // ------------------------- // ----- PARAMETERS part---- // ------------------------- diff --git a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/model/Operation.java b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/model/Operation.java index dfa30266..3bd28106 100644 --- a/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/model/Operation.java +++ b/openapi-maven-plugin/src/main/java/io/github/kbuntrock/yaml/model/Operation.java @@ -25,6 +25,9 @@ public class Operation { @JsonProperty("x-operation-name") @JsonInclude(JsonInclude.Include.NON_NULL) private String loopbackOperationName; + @JsonProperty("x-badges") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List> badges; @JsonInclude(JsonInclude.Include.NON_NULL) private String description; @JsonInclude(JsonInclude.Include.NON_NULL) @@ -118,4 +121,12 @@ public String getLoopbackOperationName() { public void setLoopbackOperationName(final String loopbackOperationName) { this.loopbackOperationName = loopbackOperationName; } + + public List> getBadges() { + return badges; + } + + public void setBadges(final List> badges) { + this.badges = badges; + } } diff --git a/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case/pom.xml b/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case/pom.xml index ff0cea09..9be05d4c 100644 --- a/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case/pom.xml +++ b/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case/pom.xml @@ -14,7 +14,7 @@ 3.8.0 ${java.version} ${java.version} - 0.0.31-dbeaver + 0.0.32-dbeaver UTF-8 diff --git a/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case_jaxrs/pom.xml b/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case_jaxrs/pom.xml index 25df000c..d4d898a6 100644 --- a/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case_jaxrs/pom.xml +++ b/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/nominal_test_case_jaxrs/pom.xml @@ -14,7 +14,7 @@ 3.8.0 ${java.version} ${java.version} - 0.0.31-dbeaver + 0.0.32-dbeaver UTF-8 diff --git a/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/sealed_class/pom.xml b/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/sealed_class/pom.xml index 230f5741..abd8f0e6 100644 --- a/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/sealed_class/pom.xml +++ b/openapi-maven-plugin/src/test/resources-its/io/github/kbuntrock/it/BasicIT/sealed_class/pom.xml @@ -13,7 +13,7 @@ 3.8.0 ${java.version} ${java.version} - 0.0.31-dbeaver + 0.0.32-dbeaver UTF-8