[kotlin-client] Support for integer enums with kotlinx with custom serializer
Closed
CH
1y ago+64+64+01234567890123456789-7-7-0123456789
Following PR https://github.com/OpenAPITools/openapi-generator/pull/21248
Following this issue, when using integer enums with the kotlin-client generator, the generated enum will serialize and deserialize strings, not integers.
How to test
- Create a
test.ymlfile with the following content:
openapi: 3.0.3
info:
title: Demo
version: v1
components:
schemas:
Code:
type: integer
enum:
- 0
- 1
StringCode:
type: string
enum:
- hello
- world
paths:
/do:
get:
summary: Do something
responses:
200:
description: Successful response
content:
application/json:
schema:
type: object
required:
- code
properties:
code:
$ref: '#/components/schemas/Code'
- Create a
config.jsonfile to generate only relevant content with the following:
{
"modelPackage": "com.test",
"generatorName": "kotlin",
"enumPropertyNaming": "UPPERCASE",
"additionalProperties": {
"serializableModel": true,
"omitGradleWrapper": true,
"omitGradlePluginVersions": true
},
"globalProperties": {
"apis": false,
"models": "",
"apiDocs": false,
"modelDocs": false,
"apiTests": false,
"modelTests": false
}
}
- Build openapi on the head branch of this PR:
./mvnw clean install -DskipTests -Dmaven.javadoc.skip=true - Run the builded version against the files you've previously created:
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -i test.yml -g kotlin -o out/ -c config.json - See the generated code handling string enums (
StringCode.kt) and integer enums (Code.kt)
PR checklist
- Read the contribution guidelines.
- 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.
- Run the following to build the project and update samples:
(For Windows users, please run the script in WSL)./mvnw clean package || exit ./bin/generate-samples.sh ./bin/configs/*.yaml || exit ./bin/utils/export_docs_generators.sh || exit
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. - File the PR against the correct branch:
master(upcoming7.x.0minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks) - If your PR solves a reported issue, reference it using GitHub's linking syntax (e.g., having
"fixes #123"present in the PR description) - If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.