Commit 3b142b1
authored
[kotlin-spring, java-spring] - gate @JsonSetter on openApiNullable for optional non-nullable fields (OpenAPITools#23993)
* fix(kotlin-spring, java-spring): gate @JsonSetter on openApiNullable for optional non-nullable fields
For optional + non-nullable properties (required: false, nullable: false):
- openApiNullable=false → @JsonSetter(nulls = Nulls.SKIP): silently ignores
explicit JSON null, protecting any defined default from being overridden
- openApiNullable=true → @JsonSetter(nulls = Nulls.FAIL): rejects explicit
JSON null, enforcing the non-nullable contract (useful for PATCH semantics)
Previously, Nulls.FAIL was unconditionally generated for all optional
non-nullable fields regardless of openApiNullable, causing a breaking change
for users on openApiNullable=false.
Java Spring now also emits @JsonSetter(nulls = Nulls.SKIP) for the same case
(previously it emitted nothing).
Fixes OpenAPITools#23976
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix documentation
* fix(kotlin-spring, java-spring): add @JsonInclude(NON_NULL) for optional non-nullable fields to prevent serializing them as explicit null in JSON
* simplify implementation
* gate by jackson config
* update samples1 parent 7b535a9 commit 3b142b1
1,664 files changed
Lines changed: 8305 additions & 703 deletions
File tree
- docs/generators
- modules/openapi-generator/src
- main
- java/org/openapitools/codegen/languages
- resources
- JavaSpring
- kotlin-spring
- test
- java/org/openapitools/codegen/kotlin/spring
- resources/3_0/kotlin
- samples
- client/petstore
- 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/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/src/main/kotlin/org/openapitools/model
- petstore
- java-camel/src/main/java/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-multipart-request-model/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-api-response-examples/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 | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
Lines changed: 28 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
313 | 313 | | |
314 | 314 | | |
315 | 315 | | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
320 | 325 | | |
321 | 326 | | |
322 | 327 | | |
| |||
551 | 556 | | |
552 | 557 | | |
553 | 558 | | |
| 559 | + | |
554 | 560 | | |
555 | 561 | | |
556 | 562 | | |
| |||
1266 | 1272 | | |
1267 | 1273 | | |
1268 | 1274 | | |
1269 | | - | |
1270 | | - | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
1271 | 1280 | | |
1272 | | - | |
| 1281 | + | |
| 1282 | + | |
| 1283 | + | |
| 1284 | + | |
| 1285 | + | |
1273 | 1286 | | |
1274 | 1287 | | |
| 1288 | + | |
1275 | 1289 | | |
1276 | 1290 | | |
1277 | 1291 | | |
| |||
1444 | 1458 | | |
1445 | 1459 | | |
1446 | 1460 | | |
1447 | | - | |
| 1461 | + | |
| 1462 | + | |
1448 | 1463 | | |
1449 | | - | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
1450 | 1469 | | |
1451 | 1470 | | |
1452 | 1471 | | |
| |||
Lines changed: 16 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
625 | 625 | | |
626 | 626 | | |
627 | 627 | | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
628 | 632 | | |
629 | 633 | | |
630 | 634 | | |
| |||
1200 | 1204 | | |
1201 | 1205 | | |
1202 | 1206 | | |
| 1207 | + | |
| 1208 | + | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
| 1214 | + | |
| 1215 | + | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
1203 | 1219 | | |
1204 | 1220 | | |
1205 | 1221 | | |
| |||
Lines changed: 12 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
64 | 71 | | |
65 | 72 | | |
66 | 73 | | |
| |||
242 | 249 | | |
243 | 250 | | |
244 | 251 | | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
245 | 257 | | |
246 | 258 | | |
247 | 259 | | |
| |||
Lines changed: 3 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
6 | 8 | | |
7 | 9 | | |
Lines changed: 74 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6404 | 6404 | | |
6405 | 6405 | | |
6406 | 6406 | | |
6407 | | - | |
6408 | | - | |
| 6407 | + | |
| 6408 | + | |
| 6409 | + | |
6409 | 6410 | | |
6410 | | - | |
| 6411 | + | |
6411 | 6412 | | |
6412 | 6413 | | |
6413 | 6414 | | |
6414 | 6415 | | |
6415 | 6416 | | |
6416 | 6417 | | |
6417 | | - | |
6418 | | - | |
6419 | | - | |
| 6418 | + | |
| 6419 | + | |
| 6420 | + | |
| 6421 | + | |
| 6422 | + | |
| 6423 | + | |
| 6424 | + | |
| 6425 | + | |
| 6426 | + | |
| 6427 | + | |
| 6428 | + | |
| 6429 | + | |
| 6430 | + | |
| 6431 | + | |
| 6432 | + | |
| 6433 | + | |
| 6434 | + | |
| 6435 | + | |
| 6436 | + | |
| 6437 | + | |
| 6438 | + | |
| 6439 | + | |
| 6440 | + | |
| 6441 | + | |
| 6442 | + | |
| 6443 | + | |
| 6444 | + | |
| 6445 | + | |
| 6446 | + | |
| 6447 | + | |
| 6448 | + | |
| 6449 | + | |
| 6450 | + | |
| 6451 | + | |
| 6452 | + | |
| 6453 | + | |
| 6454 | + | |
| 6455 | + | |
| 6456 | + | |
6420 | 6457 | | |
| 6458 | + | |
6421 | 6459 | | |
6422 | 6460 | | |
6423 | 6461 | | |
6424 | 6462 | | |
6425 | | - | |
6426 | | - | |
| 6463 | + | |
| 6464 | + | |
| 6465 | + | |
| 6466 | + | |
| 6467 | + | |
| 6468 | + | |
| 6469 | + | |
| 6470 | + | |
| 6471 | + | |
| 6472 | + | |
| 6473 | + | |
| 6474 | + | |
| 6475 | + | |
| 6476 | + | |
| 6477 | + | |
| 6478 | + | |
| 6479 | + | |
| 6480 | + | |
| 6481 | + | |
| 6482 | + | |
| 6483 | + | |
| 6484 | + | |
| 6485 | + | |
| 6486 | + | |
| 6487 | + | |
| 6488 | + | |
| 6489 | + | |
6427 | 6490 | | |
6428 | 6491 | | |
6429 | 6492 | | |
| |||
6473 | 6536 | | |
6474 | 6537 | | |
6475 | 6538 | | |
6476 | | - | |
| 6539 | + | |
6477 | 6540 | | |
6478 | 6541 | | |
6479 | 6542 | | |
6480 | 6543 | | |
6481 | | - | |
| 6544 | + | |
6482 | 6545 | | |
6483 | 6546 | | |
6484 | 6547 | | |
| 6548 | + | |
6485 | 6549 | | |
6486 | 6550 | | |
6487 | 6551 | | |
| |||
0 commit comments