Setting dateLibrary=java11 fails to map "java.time" types

Offen Anfängerfreundlich
#1,433 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
78/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
java
Bereich
backend

Rechercherichtung

Lies AbstractJavaCodegen.java im Bereich der Zeilen 488–515 und untersuche anschließend processOpts() sowie die vorhandenen dateLibrary-Zweige. Prüfe, wie die Option java11 beschrieben wird und wie Datumszuordnungen und Imports für verwandte Datumsbibliotheken konfiguriert sind. Fertig ist die Änderung, wenn die Auswahl von dateLibrary=java11 die erwarteten java.time-Zuordnungen und Imports konfiguriert, ohne dass eine separate Option java11=true erforderlich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

https://github.com/swagger-api/swagger-codegen-generators/blob/master/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java#L488-L515

In the above source code of AbstractJavaCodegen, the dateLibrary enum registers "java11" in the CLI options list. However, the processOpts() method only checks for "threetenbp", "joda", dateLibrary.startsWith("java8"), and "legacy":
• Missing if branch. Because there is no else if ("java11".equals(dateLibrary)) block in AbstractJavaCodegen.processOpts(), the generator skips setting up java.time type mappings and imports.
• Fallback to java.util.Date. By default, AbstractJavaCodegen initializes typeMapping.put("date", "Date"), which resolves to java.util.Date when no dateLibrary branch overrides it.
• Flag discrepancy. Although the CLI description claims "java11" automatically sets java11=true, the code only reads java11 if you explicitly pass true in your configuration.

This leads to the required strange combination of configuration options:

<configOptions>
    <!-- don't use "java11" - a bug in swagger lets this fall back to "legacy" -->
    <dateLibrary>java8</dateLibrary>
    <java11>true</java11>
    <jakarta>true</jakarta>
</configOptions>
Vorherrschende Sprache
Mustache
Sterne
299
Forks
439
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus swagger-api/swagger-codegen-generators

Alle Issues in swagger-api/swagger-codegen-generators

Ähnliche Issues

Weitere Issues zu Backend & API Design

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.