OpenAPITools / openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
20.76k stars 6.32k forks source link

Fix #18715 ensure codegen fields and additionalProperties are not conflicting #18818

Closed jpfinne closed 1 month ago

jpfinne commented 1 month ago

Reduce the numbers of conflicting values between java code and mustache templating.

Only write back to additionalProperties if it was present -> this ensures that boolean are correctly converted -> this ensures that there is no mismatch. Do not writeBack to additionalProperties if not present (with a few exception for backward compatibility with unit tests). Use the field values as much as possible in the java code instead of additionalProperties. In mustache, use the additionalProperties as the primary context and the codegen instance in mustache as the parent context. So mustache retrieve the values in this order:

additionalProperty codegen.getter codegen.field

It greatly reduces the need to put values in additionalProperties. A field or a getter in codeGen can be used instead.

The changes impact mainly the DefaultCodeGen and the java generators. For the java generators, the generated output stays the same.

There can be side effects for other generators. For example scala now include the email in the generated modes. It seems that it was the initial intention. It is an example of the misunderstanding that this PR tries to solve. typescript now use the correct version in README.md elm now use the correct version in README.md ruby There were too many discrepencies between the fields and the additionalProperty. There is a fallback to the old behaviour

PR checklist

General commitee @wing328

Java commitee @bbdouglas (2017/07) @sreeshas (2017/08) @jfiala (2017/08) @lukoyanov (2017/09) @cbornet (2017/09) @jeff9finger (2018/01) @karismann (2019/03) @Zomzog (2019/04) @lwlee2608 (2019/10) @martin-mfg (2023/08)

Scala commitee @clasnake (2017/07), @jimschubert (2017/09) ❤️, @shijinkui (2018/01), @ramzimaalej (2018/03), @chameleon82 (2020/03), @Bouillie (2020/04) @fish86 (2023/06)

wing328 commented 1 month ago

thanks for the PR.

let's review this via Slack.

can you please PM me on coming Friday or sometime next week when you've time?