groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul King <pa...@asert.com.au>
Subject Re: Different behaviour for @Sortable 2.3.6+
Date Thu, 12 Nov 2015 13:49:34 GMT
Yes, it was in 2.3.4 to make @Sortable work with @CompileStatic/@TypeChecked.
See here:
https://issues.apache.org/jira/browse/GROOVY-6870
and
SortableTransformTest#testSortableWithCompileStatic

Cheers, Paul.


On Thu, Nov 12, 2015 at 10:48 PM, Schalk Cronjé <ysb33r@gmail.com> wrote:
> Paul,
>
> That must have been a change introduced between Groovy 2.3.3 (which ships
> with Gradle 2.0) and Groovy 2.3.6
>
> The below code compiled against the Gradle 2.0 version, but failed it
> compiled against later Gradle versions (due to newer versions of Groovy)
>
> interface Foo extends Comparable {
>   String getVersion()
>   File getLocation()
> }
>
> @EqualsAndHashCode(excludes=['location'])
> @TupleConstructor
> @Sortable(excludes=['location'])
> @ToString
> class Bar implements Foo {
>   String version
>   File location
> }
>
> I guess I can drop the Comparable from the Foo interface or change it to an
> abstract class that is annotated with @Sortable.
>
> Thanks for the clarification.
>
>
> On 12/11/2015 12:35, Paul King wrote:
>
> @Sortable on a class Foo will add "Comparable<Foo>" to the list of
> implemented interfaces and a "compareTo(Foo other)" method.
>
> If you also implement the raw Comparable interface manually you will
> need to also add a "compareTo(Object other)" method but the raw
> version is not required or typically recommended.
>
> Cheers, Paul.
>
> On Thu, Nov 12, 2015 at 3:18 PM, Balachandran Sivakumar
> <benignbala@gmail.com> wrote:
>
> Hi,
>
>             Just looked up the Groovy doc - The doc for @Sortable[1] says
> that the generated Groovy class will implement the Comparable interface.
> Thanks
>
> [1]
> http://docs.groovy-lang.org/next/html/gapi/groovy/transform/Sortable.html
>
> On Thu, Nov 12, 2015 at 10:21 AM, Balachandran Sivakumar
> <benignbala@gmail.com> wrote:
>
> Hi Schalk,
>
> This works on 2.4.5
>
> @EqualsAndHashCode(excludes = ['config'])
> @Sortable(excludes = ['config'])
> @TupleConstructor
> @ToString
> class Foo {
>     String version
>     File config
> }
>
> I just have @Sortable annotation. From Groovy 2.3, Sortable implements
> Comparable is what I understand from the Groovy Goodness page on this
> topic[1]. So, just the class which is annotated with @Sortable is enough. I
> think We don't have to implement an "interface" at all. Thanks
>
> [1]
> http://mrhaki.blogspot.in/2014/05/groovy-goodness-use-sortable-annotation.html
>
>
> On Wed, Nov 11, 2015 at 11:03 PM, Schalk Cronjé <ysb33r@gmail.com> wrote:
>
> Bala,
>
> That does not make sense, as the following will also fail:
>
> interface Foo extends Comparable {
>   String getVersion()
>   File getLocation()
> }
>
> @EqualsAndHashCode(excludes=['location'])
> @TupleConstructor
> @Sortable(excludes=['location'])
> @ToString
> class Bar implements Foo {
>   String version
>   File location
> }
>
>
> On 11/11/2015 16:55, Balachandran Sivakumar wrote:
>
> Hi Schalk,
>
>
>
> On Wed, Nov 11, 2015 at 9:09 PM, Schalk Cronjé <ysb33r@gmail.com> wrote:
>
> This following code works under 2.3.3, but fails under 2.3.6 - 2.4.5
>
> @EqualsAndHashCode(excludes=['location'])
> @TupleConstructor
> @Sortable(excludes=['location'])
> @ToString
> class Bar implements Comparable {
>
>            I think @Sortable automatically makes it Comparable. So, we
> don't have to "implement" Comparable if we use the @Sortable annotation.
> Without the implements Comparable part, this works fine for me on groovy
> 2.4.5. Thanks
>
>
> --
> Thank you
> Balachandran Sivakumar
>
>
>
> --
> Schalk W. Cronjé
> Twitter / Ello / Toeter : @ysb33r
>
>
>
> --
> Thank you
> Balachandran Sivakumar
>
>
>
> --
> Thank you
> Balachandran Sivakumar
>
>
>
> --
> Schalk W. Cronjé
> Twitter / Ello / Toeter : @ysb33r

Mime
View raw message