-
-
Notifications
You must be signed in to change notification settings - Fork 7.1k
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)?
- 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
The generated type of an array that is nested within another array is erased to the "Any" type. The type is well defined in the OAPI declaration, and should be reflected in the generated code.
This issue does not happen for objects in array unless that array is within another array.
The issue also does not occur when the nested object type of specified via $ref
. Examples provided.
openapi-generator version
master (4.3.0-SNAPSHOT)
OpenAPI declaration file content or url
openapi: 3.0.0
info:
title: API
version: "1.0"
paths:
/endpoint:
get:
operationId: getTest
responses:
200:
description: OK
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
badProp:
type: array
items:
type: array
items:
type: object
additionalProperties: false
properties:
prop:
type: string
okProp:
type: array
items:
type: array
items:
$ref: '#/components/schemas/MyObj'
components:
schemas:
MyObj:
type: object
additionalProperties: false
properties:
prop:
type: string
Command line used for generation
java -jar openapi-generator-cli.jar generate -g kotlin -i spec.yaml -o gen
(also fails for Swift and probably any typed languge)
Steps to reproduce
- Save the example declaration above to
spec.yaml
& run the example command-line - Open the generated model file:
cat gen/src/main/kotlin/org/openapitools/client/models/InlineResponse200.kt
- Observe invalid property, which includes
kotlin.Any
inner type:
val badProp: kotlin.Array<kotlin.Array<kotlin.Any>>? = null
- Observe correct version, when using
$ref
, the inner type isMyObj
:
val okProp: kotlin.Array<kotlin.Array<MyObj>>? = null
Desired output:
val badProp: kotlin.Array<kotlin.Array<MyObj>>? = null
Either MyObj
or a generated inline model. It should just not be Any
.
Related issues/PRs
n/a
Suggest a fix
The code used to introspect the properties of arrays should respect for nested child arrays. I have not been able to figure out a fix for this yet.