OpenAPITools / OpenAPITools/openapi-generator

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

Aperta
#17,543 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Issue: Bug
Lingua principale
Java
Stelle
26.8k
Fork
7.7k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con gli esempi generati MyObject.js e BaseObject.js e riproduci il problema utilizzando lo schema allOf fornito con il generatore JavaScript e il plugin Gradle. Traccia il modo in cui constructFromObject gestisce le proprietà ereditate, quindi rigenera i modelli per verificare che i campi della classe padre non vengano più inizializzati in modo ridondante.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript
Ambito
tooling
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.