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][C++][Pistache][Restbed] Array of objects does not generate model file #3271

Open
5 of 6 tasks
muttleyxd opened this issue Jul 3, 2019 · 3 comments
Open
5 of 6 tasks

Comments

@muttleyxd
Copy link
Contributor

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • What's the version of OpenAPI Generator used?
  • Have you search for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Bounty to sponsor the fix (example)
Description

Actual:
When declaring array of objects (which have properties), model is not generated.
It will result in Object.h include missing for cpp-restbed-server and cpp-pistache-server

Expected:
model/ProblematicArrayType.h (and .cpp) are created

openapi-generator version

4.0.2

OpenAPI declaration file content or url
openapi: 3.0.0
info:
  description: Some description
  version: 0.0.1
  title: Some title

tags:
  - name: hello

paths:
  "/there":
    get:
      operationId: helloThereGet
      tags:
        - hello
      summary: Do something
      responses:
        200:
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProblematicArrayType"
servers:
  - url: http://localhost:8080
components:
  schemas:
    ProblematicArrayType:
      type: array
      items:
        type: object
        properties:
          someint:
            type: integer
            format: int32
          somestring:
            type: string
Command line used for generation

openapi-generator-cli generate -i problem.yaml -g cpp-pistache-server -o generated_pistache
openapi-generator-cli generate -i problem.yaml -g cpp-restbed-server -o generated_restbed

Steps to reproduce
openapi-generator-cli generate -i problem.yaml -g cpp-pistache-server -o generated_pistache
cd generated_pistache
mkdir build
cd build
cmake ..
make -j4
Related issues/PRs

#2769 #1827 #1637

Suggest a fix

No idea how to fix it, but the issue happens both on Pistache and Restbed

@auto-labeler
Copy link

auto-labeler bot commented Jul 3, 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.

@etherealjoy
Copy link
Contributor

@muttleyxd
So I made a check on this issue, the issue is because of the mapping of object to Object.
So whenever Object is detected the import is added. This is wrong for Pistache.

        typeMapping.put("object", "Object");
        importMapping.put("Object", "#include \"Object.h\"");

To support free form objects in Pistache is easy, simply by mapping the object to nlohmann:json

so the include can be changed to nlohmann/json.hpp or nlohmann\json.hpp (Linux/Windows)

All the issues you linked are related.

@bda618
Copy link

bda618 commented Dec 3, 2019

I have a similar issue for Kotlin, when declaring array of objects (which have properties), model is not generated.

openapi-generator version
4.2.1
OpenAPI declaration file content or url

 Errors:
      type: array
      description: List of status messages
      items:
          type: object
          properties:
            Code:
              type: string
              description: The actual Error Code value

Command line used for generation

openapi-generator-cli-4.2.1.jar org.openapitools.codegen.OpenAPIGenerator generate -g eaip-kotlin-spring -i problem.yaml --skip-validate-spec --generate-alias-as-model

Output:
@JsonIgnoreProperties(ignoreUnknown = true) data class Errors ( ) : kotlin.collections.List<kotlin.Any>{ constructor() : this()
Workaround I have found:

   Errors:
      type: array
      description: List of status messages
      properties:
        items:
            type: object
            properties:
              Code:
                type: string
                description: The actual Error Code value

My problem is that I am not owner of this API, so I need to find some arguments why do I need to wrap everything into properties, because an original YAML is totally fine from OpenAPI point of view.

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

No branches or pull requests

3 participants