OpenAPITools / OpenAPITools/openapi-generator

[BUG][JAVASCRIPT] constructFromObject redundantly re-initializes fields belonging to the parent

Offen
#17,543 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Issue: Bug
Vorherrschende Sprache
Java
Sterne
26.8k
Forks
7.7k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Description

In MyObject.js :

    static constructFromObject(data, obj) {
        if (data) {
            obj = obj || new MyModel();
            BaseModel.constructFromObject(data, obj);

            if (data.hasOwnProperty('myProperty')) {
                obj['myProperty'] = ApiClient.convertToType(data['myProperty'], 'String');
            }
            if (data.hasOwnProperty('baseProprty')) {
                obj['baseProprty'] = ApiClient.convertToType(data['baseProprty'], 'String');
            }
        }
        return obj;
    }

In BaseObject.js :

    static constructFromObject(data, obj) {
        if (data) {
            obj = obj || new BaseModel();

            if (data.hasOwnProperty('baseProperty')) {
                obj['baseProperty'] = ApiClient.convertToType(data['baseProperty'], 'String');
            }
        }
        return obj;
    }

baseProperty is initialized from the call to BaseModel.constructFromObject and then initialized again after the properties unique to the derived object.

openapi-generator version

7.2.0

OpenAPI declaration file content or url
components:
    schemas:
      BaseModel:
        type: object
        properties:
          baseProperty:
            type: string
      MyModel:
        allOf:
          - $ref: "#/components/schemas/BaseModel"
        type: object
        properties:
          myProperty:
            type: string

Generation Details

I used the Gradle plugin with the "javascript" generatorName

Steps to reproduce

Define a schema using allOf (without discriminators) and generate JavaScript models.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit den generierten Beispielen MyObject.js und BaseObject.js und reproduziere das Problem anhand des bereitgestellten allOf-Schemas mit dem JavaScript-Generator und dem Gradle-Plugin. Verfolge, wie constructFromObject geerbte Eigenschaften verarbeitet, und generiere die Modelle anschließend erneut, um zu überprüfen, dass die Felder der übergeordneten Klasse nicht mehr redundant initialisiert werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

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