Skip to content

[java] Apply additionalModelTypeAnnotations on enums#7539

Closed
agilob wants to merge 4 commits into
OpenAPITools:masterfrom
agilob:6055-additionalModelTypeAnnotations-on-enum
Closed

[java] Apply additionalModelTypeAnnotations on enums#7539
agilob wants to merge 4 commits into
OpenAPITools:masterfrom
agilob:6055-additionalModelTypeAnnotations-on-enum

Conversation

@agilob
Copy link
Copy Markdown
Contributor

@agilob agilob commented Sep 29, 2020

Fixes #6055

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • If contributing template-only or documentation-only changes which will change sample output, build the project beforehand.
  • Run the shell script ./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.
  • File the PR against the correct branch: master
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@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)

@agilob
Copy link
Copy Markdown
Contributor Author

agilob commented Sep 29, 2020

circleci is failing as it finds new changes after generation, but all changes are whitespace

@agilob agilob changed the title Apply additionalModelTypeAnnotations on enums [java] Apply additionalModelTypeAnnotations on enums Oct 3, 2020
@alimac87
Copy link
Copy Markdown

alimac87 commented Oct 4, 2020

@agilob, just a thought: in enumClass.mustache and enumOuterClass.mustache could you remove the newline between the end of comment "*/"
and "{{>additionalModelTypeAnnotations}}" to avoid the whitespace changes (and blank lines) in generated files?

e.g. in https://github.com/OpenAPITools/openapi-generator/pull/7539/files#diff-758d6dce1a3e4c52e3e30bff17da160f line 3 would read:
*/{{>additionalModelTypeAnnotations}}

@agilob
Copy link
Copy Markdown
Contributor Author

agilob commented Oct 4, 2020

This time I'm going to take readability of mustache files over extra whitespace in generated code (which you shouldnt modify anyway?)

With your changes it looks even worse :P

image

@alimac87
Copy link
Copy Markdown

alimac87 commented Oct 4, 2020

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:
{{>additionalModelTypeAnnotations}}public enum

@UnleashSpirit
Copy link
Copy Markdown
Contributor

UnleashSpirit commented Dec 24, 2020

Is there no potential side effect adding annotation targeted for classes on enums ?
I often use

@lombok.Builder
@lombok.NoArgsConstructor
@lombok.AllArgsConstructor

But on enums, strange no ?
The @lombok.Builder will end iwth "Cannot instantiate the type EnumCategorie"
As it's additionalModelTypeAnnotations I'm not sure this is a good idea

@agilob agilob closed this Jan 7, 2021
@agilob agilob deleted the 6055-additionalModelTypeAnnotations-on-enum branch September 25, 2021 20:34
kodlian added a commit to kodlian/openapi-generator that referenced this pull request May 12, 2026
…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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] [Spring] [Java] additionalModelTypeAnnotations not applied to enums

3 participants