[ https://issues.apache.org/jira/browse/GROOVY-7640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15191197#comment-15191197 ]
Pascal Schumacher commented on GROOVY-7640: ------------------------------------------- For consistency with several other AST transforms, there is now an includeSuperProperties flag to turn on this behavior. > @Builder should include superclass properties > --------------------------------------------- > > Key: GROOVY-7640 > URL: https://issues.apache.org/jira/browse/GROOVY-7640 > Project: Groovy > Issue Type: Improvement > Reporter: Marc Bogaerts > Assignee: Pascal Schumacher > > If one annotates a groovy class with @Builder and that class extends from > another class, then the generated builder does not support setting the parent > class properties. > This is especially problematic when mixin groovy builders in java code. > e.g. the following class shows what will and will not compile > {code:java} > // Animal.groovy > import groovy.transform.builder.Builder > import groovy.transform.builder.SimpleStrategy > @Builder(builderStrategy = SimpleStrategy) > class Animal { > String color > int legs > } > // Pet.groovy > import groovy.transform.builder.Builder > import groovy.transform.builder.SimpleStrategy > @Builder(builderStrategy = SimpleStrategy) > class Pet extends Animal { > String name > } > // PetTest.java > import org.junit.Test; > import static org.junit.Assert.*; > public class PetTest { > @Test public void createPet() { > // Pet pet = new Pet().setColor("white").setLegs(4).setName("Bobby"); > does not compile > Pet pet = (Pet) new > Pet().setName("Bobby").setColor("white").setLegs(4); > assertTrue(pet.getLegs() == 4); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)