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"); + } }