[spring] Support 'date-time-local' format#23395
[spring] Support 'date-time-local' format#23395Allsimon wants to merge 1 commit intoOpenAPITools:masterfrom
Conversation
There was a problem hiding this comment.
1 issue found across 3 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java">
<violation number="1" location="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java:2661">
P2: New format handling uses mismatched keys (`date-time-local` vs `local-date`), so the added `date-time-local` property post-processing branch will not execute.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
.../openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
Outdated
Show resolved
Hide resolved
.../openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
Show resolved
Hide resolved
There was a problem hiding this comment.
I expect @wing328 to suggest to simply move this into an existing spec rather than creating a new one 😅
There was a problem hiding this comment.
Yeah I almost put it in date-time-parameter-types-for-testing.yml but wasn't sure if this was the best move, I'll update the PR 👍
.../openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
Show resolved
Hide resolved
.../openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
Show resolved
Hide resolved
|
https://github.com/OpenAPITools/openapi-generator/actions/runs/23816722621/job/69487441944?pr=23395 please update the samples to fix this |
| @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) | ||
| private LocalDate dateOfBirth = LocalDate.parse("2021-01-01"); | ||
|
|
||
| private LocalDateTime adoptionDate = "2007-12-03T10:15:30"; |
There was a problem hiding this comment.
Yeah sorry about that, I was in a rush and git push'd as soon as the build passed.
I noticed after pushing and marked the PR as draft but not fast enough to not waste your time
It should be good now
...penapi3/client/petstore/spring-cloud-date-time/src/main/java/org/openapitools/model/Pet.java
Outdated
Show resolved
Hide resolved
b5c45a8 to
c33bc7f
Compare
There was a problem hiding this comment.
1 issue found across 7 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java">
<violation number="1" location="modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java:1417">
P2: `date-time-local` default generation is incorrectly limited to `dateLibrary=java8`, so `java8-localdatetime` silently loses declared defaults.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
| return null; | ||
| } else if (ModelUtils.isDateTimeLocalSchema(schema)) { | ||
| if (schema.getDefault() != null) { | ||
| if ("java8".equals(getDateLibrary())) { |
There was a problem hiding this comment.
P2: date-time-local default generation is incorrectly limited to dateLibrary=java8, so java8-localdatetime silently loses declared defaults.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java, line 1417:
<comment>`date-time-local` default generation is incorrectly limited to `dateLibrary=java8`, so `java8-localdatetime` silently loses declared defaults.</comment>
<file context>
@@ -1411,6 +1412,13 @@ public String toDefaultValue(CodegenProperty cp, Schema schema) {
return null;
+ } else if (ModelUtils.isDateTimeLocalSchema(schema)) {
+ if (schema.getDefault() != null) {
+ if ("java8".equals(getDateLibrary())) {
+ return String.format(Locale.ROOT, "LocalDateTime.parse(\"%s\")", String.valueOf(schema.getDefault()));
+ }
</file context>
See https://spec.openapis.org/registry/format/date-time-local.html
fixes #13889
@cachescrubber (2022/02) @welshm (2022/02) @MelleD (2022/02) @atextor (2022/02) @manedev79 (2022/02) @javisst (2022/02) @borsch (2022/02) @banlevente (2022/02) @Zomzog (2022/09) @martin-mfg (2023/08)
PR checklist
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.
master(upcoming7.x.0minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks)"fixes #123"present in the PR description)Summary by cubic
Add support for the OpenAPI
date-time-localformat in the Java/Spring generator. Maps toLocalDateTime(java.time.LocalDateTime) and parses defaults when thejava8date library is used; fixes #13889.date-time-local→LocalDateTimein AbstractJavaCodegen; always importjava.time.LocalDateTime; addModelUtils.isDateTimeLocalSchema.date-time-localdefaults viaLocalDateTime.parse(...)for thejava8date library (including nested object property defaults); add unit tests (Java + Spring) and regenerate samples (Pet.adoptionDatewith default).Written for commit aee5ba3. Summary will update on new commits.