[Java] Fix missing underscores for PascalCase enum values #4837
Resolves: #4837
Addresses an issue with the conversion of enum values to valid variable names. When the enum value is a string and contains multiple words without separators (e.g., TestCase), underscores between the words were previously missing (e.g., "TESTCASE").
To address this issue, the existing underscore method is now applied to the value before all characters are converted to uppercase letters. The underscore method converts CamelCase to SCREAMING_SNAKE_CASE while preserving the case of individual words (e.g., TestCase becomes TEST_CASE)
Corresponding tests have been added.
PR checklist
- [x] Read the contribution guidelines.
- [x] Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
- [x] Run the following to build the project and update samples:
(For Windows users, please run the script in Git BASH) 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./mvnw clean package ./bin/generate-samples.sh ./bin/configs/*.yaml ./bin/utils/export_docs_generators.sh./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. - [x] File the PR against the correct branch:
master(upcoming 7.1.0 minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks) - [x] If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.
@lwlee2608 @martin-mfg
@wing328 samples updated
thanks for the PR, which has been merged.
For those who need to fallback to previous naming convention, please use the enum name mapping option: https://github.com/openapitools/openapi-generator/blob/master/docs/customization.md#name-mapping
An other workaround is x-enum-varnames in the contract.
https://openapi-generator.tech/docs/templating/#all-generators-core
Still a PITA to have such a change in a minor version
Is there a way to revert back to the old behavior, for instance by setting a configuration parameter? I think this is a bad change. If you want underscores in the enums then you can put them into the swagger instead. The suggested "workarounds" are not really workarounds since we build the code using general pipelines and don't want to hardcode any manual mappings.