From 07baddfe128b41ae544a2b2ac3a6b9483be6c2f0 Mon Sep 17 00:00:00 2001 From: Tim Quinn Date: Fri, 9 Aug 2024 02:59:57 -0500 Subject: [PATCH] Minor change to Helidon version handling allowing snapshot versions (#19320) * Minor change to Helidon version handling Signed-off-by: Tim Quinn * Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java Co-authored-by: martin-mfg <2026226+martin-mfg@users.noreply.github.com> * Review comments: fix typo in comment --------- Signed-off-by: Tim Quinn Co-authored-by: martin-mfg <2026226+martin-mfg@users.noreply.github.com> --- .../languages/JavaHelidonCommonCodegen.java | 26 ++++++++++++++++++- .../languages/HelidonCommonCodegenTest.java | 6 +++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java index c0b5105a8d6..b2b3d1a6df1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaHelidonCommonCodegen.java @@ -483,7 +483,7 @@ public abstract class JavaHelidonCommonCodegen extends AbstractJavaCodegen } private void setHelidonVersion(String version) { - helidonVersion = VersionUtil.instance().chooseVersion(version); + helidonVersion = VersionUtil.instance().chooseVersionBestMatchOrSelf(version); setParentVersion(helidonVersion); helidonMajorVersion = VersionUtil.majorVersion(helidonVersion); } @@ -769,6 +769,30 @@ public abstract class JavaHelidonCommonCodegen extends AbstractJavaCodegen return chooseVersion(requestedVersion, versions); } + /** + * Returns either the best match version or, if there is none, the requested version itself to allow references to + * unpublished releases such as snapshots. + * + * @param requestedVersion version to search for + * @return either the best match or, if none, the requested version itself + */ + String chooseVersionBestMatchOrSelf(String requestedVersion) { + return chooseVersionBestMatchOrSelf(requestedVersion, versions); + } + + /** + * Returns either the best match version or, if there is none, the requested version itself to allow references to + * unpublished releases such as snapshots. + * + * @param requestedVersion version to search for + * @param candidateVersions releases to consider + * @return either the best match or, if none, the requested version itself + */ + String chooseVersionBestMatchOrSelf(String requestedVersion, List candidateVersions) { + String bestMatch = chooseVersion(requestedVersion, candidateVersions); + return bestMatch != null ? bestMatch : requestedVersion; + } + /** * Returns the version that is the "closest" match to the requested version expression from among the provided * releases, where the expression expression is one of the following: diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/languages/HelidonCommonCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/languages/HelidonCommonCodegenTest.java index 32e487e8543..750e722f2fe 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/languages/HelidonCommonCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/languages/HelidonCommonCodegenTest.java @@ -48,4 +48,10 @@ public class HelidonCommonCodegenTest { } + + @Test void checkUseOfUnpublishedRelease() { + assertThat(test.chooseVersionBestMatchOrSelf("4.0.11-SNAPSHOT", + List.of("4.0.10", "3.2.1", "3.2.0", "2.0.4", "1.2.3", "1.2.2", "1.1.0"))) + .isEqualTo("4.0.11-SNAPSHOT"); + } }