Skip to content

fix(kotlin): add JsonCreator/JsonValue to Jackson enums - #22535

Merged
wing328 merged 4 commits into
OpenAPITools:masterfrom
ramononis:master
Dec 13, 2025
Merged

fix(kotlin): add JsonCreator/JsonValue to Jackson enums#22535
wing328 merged 4 commits into
OpenAPITools:masterfrom
ramononis:master

Conversation

@ramononis

@ramononis ramononis commented Dec 12, 2025

Copy link
Copy Markdown
Contributor

Fixes #22534

Adds Jackson annotations to Kotlin client enums so numeric values are deserialized by value (not ordinal), and includes a regression test + spec repro for issue #22534.

Validation

./mvnw -pl modules/openapi-generator -am test -Dtest=org.openapitools.codegen.kotlin.KotlinClientCodegenModelTest#testJacksonEnumsUseJsonCreator -Dsurefire.failIfNoSpecifiedTests=false

@wing328

wing328 commented Dec 13, 2025

Copy link
Copy Markdown
Member

thanks for the PR

cc @karismann (2019/03) @Zomzog (2019/04) @andrewemery (2019/10) @4brunu (2019/11) @yutaka0m (2020/03) @stefankoppier (2022/06) @e5l (2024/10)

@wing328

wing328 commented Dec 13, 2025

Copy link
Copy Markdown
Member

thanks for the fix

let's give it a try

@wing328
wing328 merged commit b06fdb5 into OpenAPITools:master Dec 13, 2025
18 checks passed
@wing328 wing328 added this to the 7.18.0 milestone Dec 13, 2025
lucy66hw pushed a commit to lucy66hw/openapi-generator that referenced this pull request Dec 16, 2025
…#22535)

* fix(kotlin): add JsonCreator/JsonValue for numeric enums

* Regenerate samples

* Update title in numeric enum YAML file

* rename test
rajvesh pushed a commit to rajvesh/openapi-generator that referenced this pull request Dec 25, 2025
…#22535)

* fix(kotlin): add JsonCreator/JsonValue for numeric enums

* Regenerate samples

* Update title in numeric enum YAML file

* rename test
wing328 pushed a commit that referenced this pull request May 22, 2026
… KDoc (#23791) (#23823)

Splits the two contracts that PR #22535 (7.18.0) conflated:

- decode() stays strict and Jackson-bound (@JsonCreator entry point)
- decodeOrNull() is added as a lenient counterpart for direct callers
  that prefer the pre-7.19.0 null-on-unknown behavior

This gives users impacted by the 7.19.0 change a trivial migration path
(MyEnum.decode(x) -> MyEnum.decodeOrNull(x)) without giving up the
Jackson safety fix or matching the kotlin-spring/Java client behavior.

Also corrects the KDoc on decode() which still claimed "null otherwise"
even though the function now throws.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] [kotlin-client] numeric enums deserialize by ordinal instead of value

2 participants