groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mauro Molinari <mauro...@tiscali.it>
Subject Re: @TupleConstructor: what am I doing wrong?
Date Fri, 12 Jan 2018 11:25:22 GMT
Hi Paul,
thank you! I can't see |allProperties| annotation attribute in any of 
those annotations, at least in Groovy 2.4.x.
Let me know if I should open a JIRA ticket about this.

But... by the way... why the need of such an attribute? What's the 
difference between properties included whatever value |allProperties| 
has and those that require |allProperties=true|?
If the base class is written in Java, I see the behaviour I described, 
so I guess all Java bean properties require |allProperties=true| in 
order to make |includeSuperProperties| work as expected?

Thanks,
Mauro

Il 11/01/2018 23:52, Paul King ha scritto:
> I haven't checked the code yet but I think @Builder and @ToString 
> originally had similar issues and we added an `allProperties` 
> attribute with default true. Perhaps that is needed here too. I'll try 
> to check the code shortly.
>
> On Thu, Jan 11, 2018 at 11:57 PM, Mauro Molinari <mauromol@tiscali.it 
> <mailto:mauromol@tiscali.it>> wrote:
>
>     Hello all,
>     I'm getting crazy because I can't understand what I'm doing wrong.
>
>     Consider this (it can be pasted on the Groovy console):
>
>     |import groovy.transform.TupleConstructor||
>     ||
>     ||public class Foobar {||
>     ||  private Long id;||
>     ||||
>     ||  public Long getId() { return this.id <http://this.id>; }||
>     ||  public void setId(Long id) { this.id <http://this.id> = id; }||
>     ||}||
>     ||
>     ||@TupleConstructor(includeSuperProperties=true)||
>     ||class Ext extends Foobar {||
>     ||  String foo||
>     ||}||
>     ||
>     ||Ext.constructors.each {||
>     ||    println it||
>     ||}||
>     ||println 'end'|
>
>     The result is just:
>
>     public Ext(java.lang.String)
>     public Ext()
>     end
>
>     But isn't |id| a property (as per the Java beans conventions)???
>
>     If I replace |includeSuperProperties=true| with
>     |includeSuperFields=true|, I get the expected result:
>
>     public Ext()
>     public Ext(java.lang.Long)
>     public Ext(java.lang.Long,java.lang.String)
>     end
>
>     But in more complex cases, |includeSuperFields=true| will include
>     unwanted fields that are not actually properties.
>
>     What am I doing wrong?
>
>     Thanks in advance,
>     Mauro
>
>


Mime
View raw message