Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REQ] Lombok support for models #5447

Open
com2ghz opened this issue Feb 26, 2020 · 17 comments
Open

[REQ] Lombok support for models #5447

com2ghz opened this issue Feb 26, 2020 · 17 comments

Comments

@com2ghz
Copy link

com2ghz commented Feb 26, 2020

I created a pull request with support for lombok models that come with certain convenient annotations for immutable models with builders. Currently I implemented this only for spring-mvc.

The problem is that I can't add any reviewer to the pull request.

#5430

@bartveenstra
Copy link

Lombok does take away all those bugs for hashCode, toString and equals away, by just adding @DaTa to all pojo's. Greatly simplyfies the generation of models

@com2ghz
Copy link
Author

com2ghz commented Mar 1, 2020

Agree with @bartveenstra. I can build lombok support in the java templates. Which would simplify the models.
The models are overcomplicated in my opinion.

@pburls
Copy link
Contributor

pburls commented May 15, 2020

I would also love to see Lombok support for models.

Although it doesn't make much sense generating code that then generates more code at build time, it will really help unlock features that lombok already provides and won't need to be recreated in this project. Like builders.

I work with plenty of teams that hand craft their models using Lombok and being able to generate familiar looking code would help convince them to move over to generated models. And ease their transition without having to re-write all their tests that already use lombok builders.

If there is any help you need with getting this across the line please let me know.

@com2ghz
Copy link
Author

com2ghz commented May 15, 2020

I managed to use lombok modes by modifying the mustache files and use it already in production.

I think I will create a new generator for this.

@pburls
Copy link
Contributor

pburls commented May 16, 2020

Looking through some of the other issues, in #324 I see people claim to have managed to use the Lombok builder functionality using the new additionalModelTypeAnnotations config option for Java based generators.
I think this maybe a good enough solution for me.

@michaelpro1
Copy link

Would those annotations still require the POJO getters, setters and toStrings to still be manually removed? Since lombok is expected to generate all those.

In the meantime I forked @com2ghz branch and rebased it on top of recent master.

@com2ghz
Copy link
Author

com2ghz commented May 19, 2020

Would those annotations still require the POJO getters, setters and toStrings to still be manually removed? Since lombok is expected to generate all those.

In the meantime I forked @com2ghz branch and rebased it on top of recent master.

I would not recommend to use that branch.
Its better to create a new clean generator that does the bare minimum in order to use lombok.

I currently have it like that at the client.

@michaelpro1
Copy link

@com2ghz Which branch are you referring to? I thought that Lombok usage is generic enough that it is applicable to all Java pojo generators, client and server.

@borsch
Copy link
Member

borsch commented Aug 5, 2020

@com2ghz @michaelpro1 @pburls I have this feature here #4026 . It's available since 4.2.3 release

@pavelvrublevskij
Copy link

I have tried first time to use OpenAPI generator and without builder pattern many of developers returned to legacy state. Waiting for improvements to use lombok without using templates for generator.

@aldex32
Copy link

aldex32 commented Jun 25, 2021

Hello,
is this feature request still under the radar?

@com2ghz
Copy link
Author

com2ghz commented Jun 25, 2021

Hello,

is this feature request still under the radar?

No need for this. You can create custom mustache templates that have these lombok annotations.
We are already using this in production.
We are using the following features of Lombok:

  • Builder
  • EqualsAndHashCode
  • ToString
  • Getter
  • NonNull on required fields

On the getters we return Optionals when the field is not required. This solves the problem with nullable lists

@yildizib
Copy link

yildizib commented Aug 7, 2022

Hello,
is this feature request still under the radar?

No need for this. You can create custom mustache templates that have these lombok annotations. We are already using this in production. We are using the following features of Lombok:

  • Builder
  • EqualsAndHashCode
  • ToString
  • Getter
  • NonNull on required fields

On the getters we return Optionals when the field is not required. This solves the problem with nullable lists

Hello,

please add @DaTa in your list

@dabdirb
Copy link
Contributor

dabdirb commented Oct 7, 2023

@wing328 @martin-mfg this feature is very useful, the default generated model, introduced so many limitation and issues, especially when we defined complex schema with anyOf oneOf and $ref.
in my project, i have to create another class with same fields, decorate with lombok, use mapstruct to convert data from rest api interface.

@agr-priyanshu
Copy link

Can someone provide an example on how to achieve this, may be a working template ?

I tried adding lombok annotations in additionalModelTypeAnnotations like this;
(additionalModelTypeAnnotations="@lombok.Data;@lombok.EqualsAndHashCode)

Observations;

  1. This does add the annotation in generated classes but no import statements related to lombok are added.
  2. This doesn't remove default getter/setter/hashcode etc which eventually have to be manually removed.

@dabdirb
Copy link
Contributor

dabdirb commented Jan 16, 2024

@agr-priyanshu This PR was not merged. I will create another PR to implement this.

@pavelvrublevskij
Copy link

pavelvrublevskij commented Jan 17, 2024

@agr-priyanshu

Can someone provide an example on how to achieve this, may be a working template ?

I tried adding lombok annotations in additionalModelTypeAnnotations like this; (additionalModelTypeAnnotations="@lombok.Data;@lombok.EqualsAndHashCode)

Observations;

  1. This does add the annotation in generated classes but no import statements related to lombok are added.
  2. This doesn't remove default getter/setter/hashcode etc which eventually have to be manually removed.

Maybe my example will help you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants