Commit c158fd6
[java][spring][kotlin-spring] Make @JsonInclude/@JsonSetter opt-in to stop overriding global ObjectMapper (#24428)
* feat(json-include): introduce configurable JsonInclude policy for optional non-nullable properties
* update samples and documentation
* update documentation
* feat(json-include): add support for configurable @JsonSetter(nulls) annotations on optional non-nullable properties
* docs(migration-guide): update migration guide for Jackson annotations changes in 7.25.0
* Revert "update documentation"
This reverts commit ed876b9.
* Revert "update samples and documentation"
This reverts commit 6408e37.
* feat(json-include): enhance manual per-property JSON include policy handling
* feat(json-include): refactor JSON include policy handling with utility class
* feat(json-include): update JSON include policy constants to use VendorExtension and CodegenConstants
* refactor(json-include): replace constants with CodegenConstants in JSON include policy handling
* feat(json-include): add @JsonSetter(nulls = Nulls.SKIP) for fields with Lombok setters
* feat(json-include): add options for generating @JsonInclude and @JsonSetter annotations
* feat(json-include): introduce JsonIncludePolicy and TriStateBoolean for improved JSON annotation handling
* update samples
* update samples
* add whitespace to trigger cicd
* Revert "add whitespace to trigger cicd"
This reverts commit 3da24e0.
* feat(json-include): refactor JSON annotation handling with JsonAnnotationPolicyUtils
* update samples
* Decouple JsonSetter nulls mode from openApiNullable for optional non-nullable fields
Add optionalNonNullPropertyJsonSetterNulls option (SKIP/FAIL) and the per-property x-jackson-json-setter-nulls vendor extension (SKIP/FAIL/NONE) to the spring and kotlin-spring generators, mirroring the JsonInclude mechanism. When unset, behavior is byte-identical to today (openApiNullable-derived default), so this is fully backward compatible. Setting them enables previously-unreachable combinations such as openApiNullable=true with SKIP.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address review: guard test idx, fix setter-nulls NPE on null option, clarify migration note
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* update samples
* updated samples
* updated docs
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>1 parent a3868f7 commit c158fd6
712 files changed
Lines changed: 3586 additions & 955 deletions
File tree
- bin/configs
- docs
- generators
- modules/openapi-generator/src
- main
- java/org/openapitools/codegen
- languages
- utils
- resources
- JavaSpring
- kotlin-spring
- test
- java/org/openapitools/codegen
- java/spring
- kotlin/spring
- resources/3_0
- kotlin
- spring
- samples
- client
- others/java/restclient-jackson-default-impl/src/main/java/org/openapitools/client
- petstore
- java/resttemplate-springBoot4-jackson3
- spring-cloud-date-time/src/main/java/org/openapitools/model
- spring-cloud-deprecated/src/main/java/org/openapitools/model
- spring-cloud-feign-without-url/src/main/java/org/openapitools/model
- spring-cloud-tags/src/main/java/org/openapitools/model
- spring-cloud/src/main/java/org/openapitools/model
- spring-http-interface-bean-validation/src/main/java/org/openapitools/model
- spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model
- spring-http-interface-oauth/src/main/java/org/openapitools/model
- spring-http-interface-reactive-bean-validation/src/main/java/org/openapitools/model
- spring-http-interface-reactive-noResponseEntity/src/main/java/org/openapitools/model
- spring-http-interface-reactive/src/main/java/org/openapitools/model
- spring-http-interface-springboot-4/src/main/java/org/openapitools/model
- spring-http-interface-useHttpServiceProxyFactoryInterfacesConfigurator/src/main/java/org/openapitools/model
- spring-http-interface/src/main/java/org/openapitools/model
- openapi3
- client/petstore
- spring-cloud-3-with-optional/src/main/java/org/openapitools/model
- spring-cloud-3/src/main/java/org/openapitools/model
- spring-cloud-4-with-optional/src/main/java/org/openapitools/model
- spring-cloud-async/src/main/java/org/openapitools/model
- spring-cloud-date-time/src/main/java/org/openapitools/model
- spring-cloud-http-basic/src/main/java/org/openapitools/model
- spring-cloud-oas3-fakeapi/src/main/java/org/openapitools/model
- spring-cloud-spring-pageable/src/main/java/org/openapitools/model
- spring-cloud/src/main/java/org/openapitools/model
- spring-stubs-skip-default-interface/src/main/java/org/openapitools/model
- spring-stubs/src/main/java/org/openapitools/model
- server/petstore
- spring-boot-oneof-interface/src/main/java/org/openapitools/model
- spring-boot-oneof-sealed/src/main/java/org/openapitools/model
- spring-boot-oneof/src/main/java/org/openapitools/model
- spring-boot-springdoc/src/main/java/org/openapitools/model
- springboot-3-include-http-request-context/src/main/java/org/openapitools/model
- springboot-3/src/main/java/org/openapitools/model
- springboot-4-jspecify-openapiNullable/src/main/java/org/openapitools/model
- springboot-4-jspecify-useOptional/src/main/java/org/openapitools/model
- springboot-4-jspecify/src/main/java/org/openapitools/model
- springboot-4/src/main/java/org/openapitools/model
- springboot-delegate/src/main/java/org/openapitools/model
- springboot-implicitHeaders/src/main/java/org/openapitools/model
- springboot-source/src/main/java/org/openapitools/model
- springboot/src/main/java/org/openapitools/model
- server
- others/kotlin-springboot
- oneOf-discriminator-const/src/main/kotlin/org/openapitools/model
- oneOf-discriminator/src/main/kotlin/org/openapitools/model
- oneOf-enum-discriminator/src/main/kotlin/org/openapitools/model
- petstore
- java-camel/src/main/java/org/openapitools/model
- kotlin-spring-cloud-4/src/main/kotlin/org/openapitools/model
- kotlin-spring-cloud/src/main/kotlin/org/openapitools/model
- kotlin-spring-declarative-interface-bean-validation/src/main/kotlin/org/openapitools/model
- kotlin-spring-declarative-interface-reactive-coroutines/src/main/kotlin/org/openapitools/model
- kotlin-spring-declarative-interface-reactive-reactor-wrapped/src/main/kotlin/org/openapitools/model
- kotlin-spring-declarative-interface-wrapped/src/main/kotlin/org/openapitools/model
- kotlin-spring-declarative-interface/src/main/kotlin/org/openapitools/model
- kotlin-spring-default/src/main/kotlin/org/openapitools/model
- kotlin-spring-sealed-interfaces/src/main/kotlin/org/openapitools/model
- kotlin-springboot-3-no-response-entity/src/main/kotlin/org/openapitools/model
- kotlin-springboot-3/src/main/kotlin/org/openapitools/model
- kotlin-springboot-4/src/main/kotlin/org/openapitools/model
- kotlin-springboot-additionalproperties/src/main/kotlin/org/openapitools/model
- kotlin-springboot-bigdecimal-default/src/main/kotlin/org/openapitools/model
- kotlin-springboot-delegate-nodefaults/src/main/kotlin/org/openapitools/model
- kotlin-springboot-delegate/src/main/kotlin/org/openapitools/model
- kotlin-springboot-include-http-request-context-delegate/src/main/kotlin/org/openapitools/model
- kotlin-springboot-integer-enum/src/main/kotlin/org/openapitools/model
- kotlin-springboot-modelMutable/src/main/kotlin/org/openapitools/model
- kotlin-springboot-no-response-entity-delegate/src/main/kotlin/org/openapitools/model
- kotlin-springboot-no-response-entity/src/main/kotlin/org/openapitools/model
- kotlin-springboot-paged-model/src/main/kotlin/org/openapitools/model
- kotlin-springboot-reactive-without-flow/src/main/kotlin/org/openapitools/model
- kotlin-springboot-reactive/src/main/kotlin/org/openapitools/model
- kotlin-springboot-request-cookie/src/main/kotlin/org/openapitools/model
- kotlin-springboot-sort-validation/src/main/kotlin/org/openapitools/model
- kotlin-springboot-source-swagger1/src/main/kotlin/org/openapitools/model
- kotlin-springboot-source-swagger2/src/main/kotlin/org/openapitools/model
- kotlin-springboot-x-kotlin-implements/src/main/kotlin/org/openapitools/model
- kotlin-springboot/src/main/kotlin/org/openapitools/model
- spring-boot-defaultInterface-unhandledExcp/src/main/java/org/openapitools/model
- spring-boot-nullable-set/src/main/java/org/openapitools/model
- springboot-beanvalidation-no-nullable/src/main/java/org/openapitools/model
- springboot-beanvalidation/src/main/java/org/openapitools/model
- springboot-builtin-validation/src/main/java/org/openapitools/model
- springboot-delegate-j8/src/main/java/org/openapitools/model
- springboot-delegate-no-response-entity/src/main/java/org/openapitools/model
- springboot-delegate/src/main/java/org/openapitools/model
- springboot-implicitHeaders-annotationLibrary/src/main/java/org/openapitools/model
- springboot-implicitHeaders/src/main/java/org/openapitools/model
- springboot-include-http-request-context/src/main/java/org/openapitools/model
- springboot-lombok-data/src/main/java/org/openapitools/model
- springboot-lombok-tostring/src/main/java/org/openapitools/model
- springboot-paged-model/src/main/java/org/openapitools/model
- springboot-petstore-with-api-response-examples/src/main/java/org/openapitools/model
- springboot-reactive-noResponseEntity/src/main/java/org/openapitools/model
- springboot-reactive/src/main/java/org/openapitools/model
- springboot-sort-validation/src/main/java/org/openapitools/model
- springboot-spring-pageable-delegatePattern-without-j8/src/main/java/org/openapitools/model
- springboot-spring-pageable-delegatePattern/src/main/java/org/openapitools/model
- springboot-spring-pageable-without-j8/src/main/java/org/openapitools/model
- springboot-spring-pageable/src/main/java/org/openapitools/model
- springboot-spring-provide-args/src/main/java/org/openapitools/model
- springboot-useoptional/src/main/java/org/openapitools/model
- springboot-virtualan/src/main/java/org/openapitools/virtualan/model
- springboot-x-implements-skip/src/main/java/org/openapitools/model
- springboot/src/main/java/org/openapitools/model
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
7 | 10 | | |
8 | 11 | | |
9 | 12 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
7 | 10 | | |
8 | 11 | | |
9 | 12 | | |
| |||
0 commit comments