Add support for Helidon 4 MP client and server generation #18627
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #18261 to support generation of Helidon 4 MP clients and servers. (A later PR will add support for Helidon 4 SE clients and servers.)
Key changes:
Update the
pom.xml
templates for the Helidon client and server generators:pom.xml
template accordingly and set a mustache attribute from the Java code to indicate which one to use.pom.xml
template and set a mustache attribute from the Java code to indicate which to use.Add support for retrieving the list of released Helidon versions and allowing generator users to specify a prefix for the desired Helidon version.
The generators now find the highest Helidon release that matches the user-supplied prefix as
helidonVersion
. Thehelidon.io
website serves a metadata file listing released versions. The Helidon generators attempt to retrieve that list from the website and, if successful, they save the list locally using the Java preferences API. If the internet is not available then previously-stored preferences are used if available and, otherwise, a version list hardcoded in the code is used.The PR also contains a new test to exercise this feature.
Adjust workflows.
samples-jdk21.yaml
. Helidon 4 requires Java 21, so the samples generated for Helidon 4 do as well.samples-java-helidon.yaml
(which deals with samples for Helidon 3) tosamples-java-helidon-v3.yaml
and change thesamples
paths to include/v3
.samples-java-helidon-v4.yaml
(which deals with samples for Helidon 4) and use subdirectories/v4
.samples-jdk17.yaml
to reflect the new locations for the generated Helidon sample projects.Why so many changed files?
Because the build process for all generators creates sample apps using an OpenAPI document and the various generators, and because this PR puts Helidon 3 samples in a new subdirectory, this PR also moves the sample files that were generated by the previous Helidon 3 generators into the new
v3
subdirectory.The number of changed files in the PR seems very large as a result. The generated Helidon 4 MP apps go into the new
v4
subdirectory (to be joined eventually by generated SE samples in a later PR). Doing this allows us to generate samples for multiple Helidon target releases (3 and 4, for now) and avoid collisions between the generated projects while making sure our changes to the generator to support 4.x do not break the generated code for Helidon 3 as we still have active Helidon 3 users.PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*
.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master
(upcoming 7.1.0 minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)Attention: @bbdouglas (2017/07) @sreeshas (2017/08) @jfiala (2017/08) @lukoyanov (2017/09) @cbornet (2017/09) @jeff9finger (2018/01) @karismann (2019/03) @Zomzog (2019/04) @lwlee2608 (2019/10) @martin-mfg (2023/08)