OpenAPITools / OpenAPITools/openapi-generator

[BUG][csharp-netcore] When model object has Oneof property as array of string then generated code doesn't build because of syntax error

Open
#9,747 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue: Bug
Dominant language
Java
Stars
26.8k
Forks
7.7k
PR merge metrics
PR metrics pending

Description

Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

When a Model object has oneOf properties. And, out of those oneOf, one of them is an array of string, then the
generated client code has syntax error.

openapi-generator version

master @ https://github.com/OpenAPITools/openapi-generator/commit/e600f7d149df999c7a549ba0b467658f87e0acec

OpenAPI declaration file content or url
openapi: 3.0.3
info:
  title: C# Object with oneof array of string
  version: v1
paths:
  '/hello':
    get:
      responses:
        '200':
          description: returns compared object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Compare'

components:
  schemas:
    Compare:
      description: Comparison information
      oneOf:
        - type: number
        - type: array
          items:
            type: string
Generation Details

See steps below.

Steps to reproduce
>openapi-generator generate -g csharp-netcore -i openapi.yaml --library httpclient -o out/csharp_oneof_array_string_issue --model-package Model --api-package Api

>cd out/csharp_oneof_array_string_issue
>dotnet build --configuration Release

produces:

C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,37): error CS1001: Identifier expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,37): error CS1003: Syntax error, '>' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,37): error CS1003: Syntax error, '(' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,43): error CS1001: Identifier expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,43): error CS1003: Syntax error, ',' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,44): error CS1003: Syntax error, ',' expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,45): error CS8124: Tuple must contain at least two elements. [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,46): error CS1001: Identifier expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]
C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Model\Compare.cs(95,46): error CS1026: ) expected [C:\Projects\ssh_clone\out\csharp_oneof_array_string_issue\src\Org.OpenAPITools\Org.OpenAPITools.csproj]

Which if I open in VS:
image

And, the generator template for this code is:
https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache#L61-L69

Related issues/PRs

None that I could find.

Suggest a fix

May be update the above openapi-generator template method for case of array of string i.e. List<string>

@wing328 @lucamazzanti @Blackclaws @shibayan @frankyjuang @mandrean @devhl-labs @jfeltesse-mdsol

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.

Research direction

Start with modules/openapi-generator/src/main/resources/csharp-netcore/modelOneOf.mustache at lines 61-69, then generate the provided OpenAPI declaration with the csharp-netcore generator and httpclient library. Inspect the generated src/Org.OpenAPITools/Model/Compare.cs and run dotnet build; done means the generated client builds without the reported syntax errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, openapi
Domain
build-system, devtools
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.