asyncapi/java-spring-template

Add all argument constructor to generated classes and make setters like a builder

Closed this issue · 4 comments

Reason/Context

Now generated classes have only one default no argument constructor and classic setters (set field value and return void).
I suggest at least one changes:

  • add more constructor to generated classes: all argument constructor
  • make setters like a builder (set field value and return this object)

This changes can increase readability of generated classes and decrease unnecessary verbose when using models in client services.

Description

Add all argument constructor to generated classes OR (AND) make setters like a builder

Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.

Hello @vladigeras
Thank you for the feedback.
I think it's also third option to use records.
About all argument constructor I see a drawback in readability when object has 10+ fields. Maybe argument constructor should be made for required fields.
Builder is also a good option.

I'll think about it

"About all argument constructor I see a drawback in readability when object has 10+ fields".
Kotlin named arguments)).

I suggest, that all argument constructor can be added as optional way to create an object. If it unsuitable way, then programmer can skip it and use another way.

Can we use record for class generation now? For example, with some generator parameters
Use records = limit minimal Java version as 16

This issue has been automatically marked as stale because it has not had recent activity 😴

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience ❤️