OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
21.35k stars 6.46k forks source link

[csharp-nancyfx] Endpoints returning an Async Array calls non-existent Task.ToArray() #1097

Open stevwan opened 5 years ago

stevwan commented 5 years ago
Description

The Async API generated for csharp-nancyfx invokes a non-existent function: Task.ToArray(), causing compile time and runtime errors.

openapi-generator version

3.2.3

OpenAPI declaration file content or url

Cut down version of the default pet store

openapi: 3.0.0
info:
  description: >-
    ...
  version: 1.0.0
  title: Swagger Petstore
  termsOfService: 'http://swagger.io/terms/'
  contact:
    email: apiteam@swagger.io
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
paths:
  /pets
    get:
      tags:
        - pet
      summary: Get all pets
      description: >-
        Get all pet names
      operationId: getAllPets
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string

Config file used for code generation:

{
        "asyncServer": "true"
}
Command line used for generation

java -jar openapi-generator-cli.jar -l csharp-nancyfx -i -c -o generatedNancyFxServer

Steps to reproduce

Copy the yml and json into respective files. Run command to generate the NancyFxServer project. Open in VS or simply try to build it.

Related issues/PRs

None found

Suggest a fix/enhancement

In following line of code: https://github.com/OpenAPITools/openapi-generator/blob/8fb3b707a1c4eb462b068bf2c2d20d570d4bb1d9/modules/openapi-generator/src/main/resources/csharp-nancyfx/api.mustache#L34

Current code:

{{#returnType}}{{#isListContainer}}.ToArray(){{/isListContainer}}{{/returnType}}

Fix: If asyncServer is set, do not write ".ToArray()"

{{^asyncServer}}{{#returnType}}{{#isListContainer}}.ToArray(){{/isListContainer}}{{/returnType}}{{/asyncServer}}

I've manually removed this and confirmed that the endpoint returns values correctly without the ".ToArray()"

wing328 commented 5 years ago

@stevwan thanks for reporting the issue. May I know if you've time to contribute a fix? I can work with you on that.

stevwan commented 5 years ago

I’m happy to create the pull request. You ok with the proposed solution? I haven’t tested all config / option combinations.

On 25 Sep 2018, at 5:24 pm, William Cheng notifications@github.com wrote:

@stevwan thanks for reporting the issue. May I know if you've time to contribute a fix? I can work with you on that.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

wing328 commented 5 years ago

@stevwan yup, let's try with your proposed solution.