openapi-generator
openapi-generator copied to clipboard
[REQ] Lombok support for models
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.
https://github.com/OpenAPITools/openapi-generator/pull/5430
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
Agree with @bartveenstra. I can build lombok support in the java templates. Which would simplify the models. The models are overcomplicated in my opinion.
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.
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.
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.
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.
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.
@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.
@com2ghz @michaelpro1 @pburls I have this feature here https://github.com/OpenAPITools/openapi-generator/pull/4026 . It's available since 4.2.3 release
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.
Hello, is this feature request still under the radar?
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, 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
@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.
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;
- This does add the annotation in generated classes but no import statements related to lombok are added.
- This doesn't remove default getter/setter/hashcode etc which eventually have to be manually removed.
@agr-priyanshu This PR was not merged. I will create another PR to implement this.
@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;
- This does add the annotation in generated classes but no import statements related to lombok are added.
- This doesn't remove default getter/setter/hashcode etc which eventually have to be manually removed.
Maybe my example will help you