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
4.0.2
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
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
openapi-generator-cli generate -i problem.yaml -g cpp-pistache-server -o generated_pistache
cd generated_pistache
mkdir build
cd build
cmake ..
make -j4
No idea how to fix it, but the issue happens both on Pistache and Restbed
馃憤 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.
@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.
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.
Most helpful comment
@muttleyxd
So I made a check on this issue, the issue is because of the mapping of
objecttoObject.So whenever
Objectis detected the import is added. This is wrong for Pistache.To support free form objects in Pistache is easy, simply by mapping the
objecttonlohmann:jsonso the include can be changed to
nlohmann/json.hppornlohmann\json.hpp(Linux/Windows)All the issues you linked are related.