[BUG][JAVA] Generated code still missing many @Nullable annotations

Offen
#25,536 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
java
Bereich
tooling

Rechercherichtung

Start by generating a Java model with the useJspecify option enabled, using a spec like the one in #23656, and compare the output with the snippet in the issue. The fix belongs in the Java model templates that emit @NullMarked code, which you can locate by searching for the useJspecify flag. Done means the listed members (the additionalProperties field and getter, getAdditionalProperty, equals, toIndentedString) carry @Nullable where they can be null, and a nullability checker reports no new errors.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Issue: Bug
Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

When generating a Java model with useJspecify, the package is @NullMarked but many @Nullable annotations are missing.

  private Map<String, Object> additionalProperties;  // <-- both Map and possibly Object should be @Nullable

  @JsonAnySetter
  public TestModel putAdditionalProperty(String key, Object value) {
    if (this.additionalProperties == null) {  // <-- it handles the Map being null here
        this.additionalProperties = new HashMap<String, Object>();
    }

  @JsonAnyGetter
  public Map<String, Object> getAdditionalProperties() {  // <-- matching annotation needed here
    return additionalProperties;  // <-- as it could return null
  }

  public Object getAdditionalProperty(String key) {  // <-- missing @Nullable
    if (this.additionalProperties == null) {
        return null;  // <-- for this return
    }
    return this.additionalProperties.get(key);  // <-- and possibly here if values can be null
  }

  @Override
  public boolean equals(Object o) {  // <-- should be @Nullable
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {  // <-- as per Object.equals spec, it handles nulls
      return false;
    }
    // ...
  }

  private String toIndentedString(Object o) {  // <-- ditto
      return o == null ? "null" : o.toString().replace("\n", "\n    ");
  }
openapi-generator version

7.27.0

OpenAPI declaration file content or url

See #23656

Generation Details

See #23656

Steps to reproduce

See #23656

Related issues/PRs

#23656

Suggest a fix

Add @Nullable in the correct places in the templates.

Scan all generated code with a nullability checker that can find further instances of this error.

Vorherrschende Sprache
Java
Sterne
26.9k
Forks
7.8k
Ø Merge
2 T. 10 Std.
Gemergte PRs (30 T.)
180

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

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 OpenAPITools/openapi-generator

Alle Issues in OpenAPITools/openapi-generator

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

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