I was looking recently for a nice way to generate Fluent Builder pattern code in Eclipse. I tried two plugins
- Builder Pattern Eclipse Plugin (https://github.com/henningjensen/bpep)
- fluent-builders-generator-eclipse-plugin (https://code.google.com/p/fluent-builders-generator-eclipse-plugin/)
but both are not enough for me. I was looking for a plugin with ability to generate Fluent Builder for immutable class with final fields. Unfortunately both mentioned plugins work only with mutable classes.
So I decided to write my own plugin as a fork of BPEP.
Below you can see some example class and builder generated for it by FBGEP – Fluent Builder Generator Eclipse Plugin.
public class Person { private final String firstname; private final String lastname; private final String address; private final String zipcode; private final String city; public Person(String firstname, String lastname, String address, String zipcode, String city) { this.firstname = firstname; this.lastname = lastname; this.address = address; this.zipcode = zipcode; this.city = city; } }
Class with generated fluent builder:
public class Person { private final String firstname; private final String lastname; private final String address; private final String zipcode; private final String city; public Person(String firstname, String lastname, String address, String zipcode, String city) { this.firstname = firstname; this.lastname = lastname; this.address = address; this.zipcode = zipcode; this.city = city; } public static class PersonBuilder { private String firstname; private String lastname; private String address; private String zipcode; private String city; public PersonBuilder withFirstname(String firstname) { this.firstname = firstname; return this; } public PersonBuilder withLastname(String lastname) { this.lastname = lastname; return this; } public PersonBuilder withAddress(String address) { this.address = address; return this; } public PersonBuilder withZipcode(String zipcode) { this.zipcode = zipcode; return this; } public PersonBuilder withCity(String city) { this.city = city; return this; } public Person build() { return new Person(firstname, lastname, address, zipcode, city); } public static PersonBuilder person() { return new PersonBuilder(); } } }
GitHub repository:
https://github.com/coffeedriven/fbgep
Eclipse plugin update site: