[ https://issues.apache.org/jira/browse/GROOVY-8453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16333161#comment-16333161 ]
Paul King edited comment on GROOVY-8453 at 1/20/18 3:32 AM: ------------------------------------------------------------ Just looked into this a bit more - it's interesting to note that when property names (i.e. within {{includes}} and {{excludes}} if used) are checked, the JavaBean names are checked against. Note also the comments within {{BeanUtils#getAllProperties}}: {code} // TODO add generics support so this can be used for @EAHC // TODO add an includePseudoSetters so this can be used for @TupleConstructor {code} was (Author: paulk): Just looked into this a bit more - it's interesting to note that when property names (i.e. within {{includes}} and {{excludes}} if used) are checked, the JavaBean names are checked against. > @TupleConstructor ignoring inherited standard Java Beans properties > ------------------------------------------------------------------- > > Key: GROOVY-8453 > URL: https://issues.apache.org/jira/browse/GROOVY-8453 > Project: Groovy > Issue Type: Bug > Components: ast builder > Affects Versions: 2.4.13 > Reporter: Mauro Molinari > Priority: Major > > Consider this (it can be pasted on the Groovy console): > {code:groovy} > import groovy.transform.TupleConstructor > public class Foobar { > private Long id; > > public Long getId() \{ return this.id; } > public void setId(Long id) \{ this.id = id; } > } > @TupleConstructor(includeSuperProperties=true) > class Ext extends Foobar { > String foo > } > Ext.constructors.each { > println it > } > println 'end' > {code} > > The result is just: > {noformat} > public Ext(java.lang.String) > public Ext() > end > {noformat} > But {{id}} is a property (as per the Java Bean conventions) and I would > expect it to be present in the generated constructors for {{Ext}}. > If I replace {{includeSuperProperties=true}} with > {{includeSuperFields=true}}, I get the expected result: > {noformat} > public Ext() > public Ext(java.lang.Long) > public Ext(java.lang.Long,java.lang.String) > end > {noformat} > But in more complex cases, {{includeSuperFields=true}} will include unwanted > fields that are not actually properties. > Discussing this on the users mailing list with Paul King, here is his > feedback: > {quote} > I think @Builder and @ToString originally had similar issues and we added an > `allProperties` attribute with default true. Perhaps that is needed here too > {quote} -- This message was sent by Atlassian JIRA (v7.6.3#76005)