Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG][DART] Method listFromJson isn't defined on array of enums #4887

Closed
selankon opened this issue Dec 29, 2019 · 7 comments · Fixed by #5355
Closed

[BUG][DART] Method listFromJson isn't defined on array of enums #4887

selankon opened this issue Dec 29, 2019 · 7 comments · Fixed by #5355

Comments

@selankon
Copy link
Contributor

Description

When I define inside an object a property that is an array of enums, the generated code call a method listFromJson that is not defined inside the enum model causing build problems.

openapi-generator version
➜ openapi-generator version
4.2.2
OpenAPI declaration file content or url
openapi: 3.0.0
info:
    title: RetroShare OpenApi wrapper
    version: 0.0.1
    description: RetroShare OpenApi wrapper generated using Doxygen documentation
    license:
        name: AGPLv3
servers:
    - url: http://127.0.0.1:9092/
    
paths:
    /jsonApiServer/version:
        post:
            summary: blahblah             
            responses:
                '200':
                    description: >
                            return: 
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/FileChunksInfo'

components:      
    schemas:
        FileChunksInfo:
            type: object
            properties:
                chunks:
                    type: array
                    items:
                        $ref: '#/components/schemas/ChunkState'
        ChunkState:
            type: integer
            enum:
                
                    - 0
                    - 1
                    - 2
                    - 3
            x-enum-varnames:
                
                    - CHUNK_OUTSTANDING
                    - CHUNK_ACTIVE
                    - CHUNK_DONE
                    - CHUNK_CHECKING
Command line used for generation
➜ openapi-generator generate -i definition.yml -g dart -o openapi-dart-retroshare-api-wrapper
Steps to reproduce

Just copy the .yml definition and run the command.

After the code is generated be sure that all the dependencies are installed. I us VSCodium with Dart extension for that.

Once all installed you will see a build error on lib/model/file_chunks_info.dart.

  FileChunksInfo.fromJson(Map<String, dynamic> json) {
    if (json == null) return;
    chunks = (json['chunks'] == null) ?
      null :
      ChunkState.listFromJson(json['chunks']);
  }

Where listFromJson is not defined on ChunkState model.

Related issues/PRs

Maybe related to #2567

Suggest a fix

Should the nums have the method listFromJson?

@auto-labeler
Copy link

auto-labeler bot commented Dec 29, 2019

👍 Thanks for opening this issue!
🏷 I have applied any labels matching special text in your issue.

The team will review the labels and make any necessary changes.

@kuhnroyal
Copy link
Contributor

Also running into this.

@selankon
Copy link
Contributor Author

selankon commented Jan 22, 2020

The method that is not implemented and is implemented on other models should be like:

static List<ChunkState> listFromJson(List<dynamic> json) {
    return json == null ? List<ChunkState>() : json.map((value) => ChunkState.fromJson(value)).toList();
  }

I'm not sure why this is not implemented, but looking at the mustache files dart/class.mustache I found:

  static List<{{classname}}> listFromJson(List<dynamic> json) {
    return json == null ? new List<{{classname}}>() : json.map((value) => new {{classname}}.fromJson(value)).toList();
  }

So maybe we need only to add this code on dart/enum.mustache ? Something like that (i'm not able to do the checklist to make a PR right now...)

selankon added a commit to selankon/openapi-generator that referenced this issue Feb 17, 2020
@selankon
Copy link
Contributor Author

I created the PR but modifying the template inside dart2 folder.

@tuomohopia
Copy link

I keep hitting this myself too. Any good ways to solve this?

@selankon
Copy link
Contributor Author

selankon commented May 1, 2020

Please merge my PR (is not merged on master yet)
#5355

@wing328
Copy link
Member

wing328 commented May 2, 2020

@selankon thanks for the fix, which has been merged into the master.

Have a nice weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants