[java] Apply additionalModelTypeAnnotations on enums#7539
Conversation
|
circleci is failing as it finds new changes after generation, but all changes are whitespace |
…to 6055-additionalModelTypeAnnotations-on-enum
…to 6055-additionalModelTypeAnnotations-on-enum
|
@agilob, just a thought: in enumClass.mustache and enumOuterClass.mustache could you remove the newline between the end of comment "*/" e.g. in https://github.com/OpenAPITools/openapi-generator/pull/7539/files#diff-758d6dce1a3e4c52e3e30bff17da160f line 3 would read: |
|
Yep fair point - I thought I'd tested this and seen the generated code include a new line between the "*/" and "@", but I must have been mistaken. Edit: this was the version which did not include the empty lines in output: |
|
Is there no potential side effect adding annotation targeted for classes on enums ? But on enums, strange no ? |
…mports Three new CLI options for the Swift 5 and Swift 6 client generators: - additionalModelObjectAttributes: Swift attributes prepended to every generated model struct/class declaration (e.g. @mainactor, custom @attached macros). - additionalModelEnumAttributes: Swift attributes prepended to every generated model enum declaration (e.g. @CasePathable, @dynamicMemberLookup). - additionalModelImports: additional Swift modules imported at the top of every generated model file. Object and enum attributes are scoped separately because most Swift attributes are kind-restricted (e.g. @CasePathable only applies to enums, attached macros are commonly @attached(member, peer) for structs/classes only, @mainactor on a typealias is illegal). A single shared option would force users to pick attributes valid across all kinds — too restrictive in practice. This mirrors the split adopted for the Java generator in OpenAPITools#8389 (which superseded the unified OpenAPITools#7539). Parsing follows the SPLIT_ON_SEMICOLON_OR_NEWLINE_REGEX convention already established by additionalModelTypeAnnotations in the Java/Kotlin generators. Blank tokens are filtered out so that malformed input (e.g. trailing semicolons) cannot inject empty entries into the templates. Per-model injection happens in postProcessAllModels. Orthogonal to OpenAPI's spec-level deprecated flag (already handled by the swift template via @available(*, deprecated, ...)). The new options target project-wide attributes and modules that are not addressable from the spec itself. OpenAPITools#11013 added generateFrozenEnums — a hard-coded @Frozen opt-in for enums. This change is the natural generalization: rather than adding a new boolean for every Swift attribute users might want, additionalModelEnumAttributes lets them inject any attribute or attached macro. Naming uses Swift-native vocabulary ("attributes" for @-syntax) since the options are Swift-specific and not abstracted across language generators. Tests: per-generator parsing tests for each option plus a blank-token filter test (8 tests, passing). Options registered in Swift5OptionsProvider / Swift6ClientCodegenOptionsProvider and the matching *OptionsTest classes. Docs regenerated via bin/utils/export_generator.sh. All swift samples regenerated with no diff.

Fixes #6055
PR checklist
./bin/generate-samples.shto update all Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example./bin/generate-samples.sh bin/configs/java*. For Windows users, please run the script in Git BASH.master@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) @bkabrda (2020/01)