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

Open
#1,097 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
52/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
csharp
Domain
api, backend, tooling

Research direction

Start with modules/openapi-generator/src/main/resources/csharp-nancyfx/api.mustache, especially the returnType and isListContainer logic. Run the provided OpenAPI generation command with asyncServer enabled, then build the generated NancyFX project. Done means the generated async array endpoint contains no invalid Task.ToArray() call and builds and returns values correctly.

Written by the indexing model from the issue text.

Description

Issue: Bug Server: C-Sharp
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()"

Dominant language
Java
Stars
26.8k
Forks
7.7k
Avg merge
1d 6h
Merged PRs (30d)
100

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from OpenAPITools/openapi-generator

All issues in OpenAPITools/openapi-generator

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.