OpenAPITools / OpenAPITools/openapi-generator
[BUG] Object with additionalProperties detected as "free-form"
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 26.8k
- Forks
- 7.7k
- PR merge metrics
- PR metrics pending
Description
Description
I have a type Money and a type MoneyTuple, which simply has additionalProperties: $ref: '#/Money'. Despite that the properties are all typed, the Java generator decides that this is a "free-form object" and doesn't output a DTO for it. Other types ref'ing MoneyTuple then fail.
The equivalent code NumberTuple where the values are numbers works as expected.
openapi-generator version
I'm using OpenAPI Generator 4.3.1 from the Maven plugin.
OpenAPI declaration file content or url
components:
schemas:
Money:
type: object
required: [currency, amount]
properties:
currency:
type: string
amount:
type: string
MoneyTuple: # ignored as "free-form object"
type: object
additionalProperties:
$ref: '#/components/schemas/Money'
MoneyTupleSeries: # fails on compilation because MoneyTuple isn't generated
type: array
items:
type: object
required: [label, values]
properties:
label:
type: string
values:
$ref: '#/components/schemas/MoneyTuple'
NumericTuple: # extends HashMap<String, Double>
type: object
additionalProperties:
type: number
format: double
Generation Details
I am using the Maven plugin with <generateAliasAsModel>true</generateAliasAsModel>.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Java generator's handling of OpenAPI schemas using additionalProperties, and reproduce the supplied Money, MoneyTuple, MoneyTupleSeries, and NumericTuple declaration through the Maven plugin with generateAliasAsModel enabled. Done means MoneyTuple is generated as a typed map or DTO as appropriate, and MoneyTupleSeries compiles without the missing-model failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, openapi
- Domain
- api, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100