You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@groovy.apache.org by Rick Venutolo <rv...@digitalenvoy.net> on 2016/04/11 22:47:01 UTC
Spring Groovy application context and creating @Immutable class beans
Hi all,
As a fun learning experience I am attempting to move an application's
Spring configuration from XML to Groovy. I need to create a bean for a
Groovy class that is annotated with @Immutable.
Let's say my class is this:
@Immutable
class MyImmutableClass {
String someString
String otherString
String anotherString
}
And I attempt to create a bean like so:
beans {
myImmutableClass(
MyImmutableClass,
someString: 'some',
otherString: 'other',
anotherString: 'another'
)
}
It fails:
Invalid property 'someString' of bean class [MyImmutableClass]: Bean
property 'someString' is not writable or has an invalid setter method. Does
the parameter type of the setter match the return type of the getter?
I can do the following, but I then lose the parameter name information that
tells me which fields are set to which values:
beans {
myImmutableClass(
MyImmutableClass,
'some',
'other',
'another'
)
}
I can also remove the @Immutable annotation from the class. But let's
assume this class comes from somewhere else and I cannot modify it.
So what are my options here that combine not modifying the @Immutable class
and keeping the parameter names? I know I can combine Groovy and XML
configuration and define the bean in XML and then use importBeans in my
Groovy code, but is there something I can do that is purely Groovy?
I found this issue, which describes my problem:
https://issues.apache.org/jira/browse/GROOVY-7078
Thanks,
Rick
Re: Spring Groovy application context and creating @Immutable class beans
Posted by Mario Garcia <ma...@gmail.com>.
You're welcome :)
On 25 Apr 2016 20:05, "Rick Venutolo" <rv...@digitalenvoy.net> wrote:
> I had not thought to use that constructor. Thank you!
>
> On Mon, Apr 25, 2016 at 5:01 AM, Mario Garcia <ma...@gmail.com>
> wrote:
>
>> Although I think It should be better to discuss this in the Grails
>> mailing list (they sure have much more experience in Spring+Groovy) I have
>> done a little test in a Grails app with an immutable (@Immutable) bean:
>>
>> package a.b.c
>>
>> @Immutable
>> class Pagination {
>> Integer max
>> }
>>
>> myBean(a.b.c.Pagination, [max:1001])
>>
>> and it seems to be working.
>> Mario
>>
>> 2016-04-11 22:47 GMT+02:00 Rick Venutolo <rv...@digitalenvoy.net>:
>>
>>> Hi all,
>>>
>>> As a fun learning experience I am attempting to move an application's
>>> Spring configuration from XML to Groovy. I need to create a bean for a
>>> Groovy class that is annotated with @Immutable.
>>>
>>> Let's say my class is this:
>>>
>>> @Immutable
>>> class MyImmutableClass {
>>> String someString
>>> String otherString
>>> String anotherString
>>> }
>>>
>>>
>>> And I attempt to create a bean like so:
>>>
>>> beans {
>>> myImmutableClass(
>>> MyImmutableClass,
>>> someString: 'some',
>>> otherString: 'other',
>>> anotherString: 'another'
>>> )
>>> }
>>>
>>> It fails:
>>> Invalid property 'someString' of bean class [MyImmutableClass]: Bean
>>> property 'someString' is not writable or has an invalid setter method. Does
>>> the parameter type of the setter match the return type of the getter?
>>>
>>> I can do the following, but I then lose the parameter name information
>>> that tells me which fields are set to which values:
>>>
>>> beans {
>>> myImmutableClass(
>>> MyImmutableClass,
>>> 'some',
>>> 'other',
>>> 'another'
>>> )
>>> }
>>>
>>>
>>> I can also remove the @Immutable annotation from the class. But let's
>>> assume this class comes from somewhere else and I cannot modify it.
>>>
>>> So what are my options here that combine not modifying the @Immutable
>>> class and keeping the parameter names? I know I can combine Groovy and XML
>>> configuration and define the bean in XML and then use importBeans in my
>>> Groovy code, but is there something I can do that is purely Groovy?
>>>
>>> I found this issue, which describes my problem:
>>> https://issues.apache.org/jira/browse/GROOVY-7078
>>>
>>> Thanks,
>>> Rick
>>>
>>>
>>>
>>
>
Re: Spring Groovy application context and creating @Immutable class beans
Posted by Rick Venutolo <rv...@digitalenvoy.net>.
I had not thought to use that constructor. Thank you!
On Mon, Apr 25, 2016 at 5:01 AM, Mario Garcia <ma...@gmail.com> wrote:
> Although I think It should be better to discuss this in the Grails mailing
> list (they sure have much more experience in Spring+Groovy) I have done a
> little test in a Grails app with an immutable (@Immutable) bean:
>
> package a.b.c
>
> @Immutable
> class Pagination {
> Integer max
> }
>
> myBean(a.b.c.Pagination, [max:1001])
>
> and it seems to be working.
> Mario
>
> 2016-04-11 22:47 GMT+02:00 Rick Venutolo <rv...@digitalenvoy.net>:
>
>> Hi all,
>>
>> As a fun learning experience I am attempting to move an application's
>> Spring configuration from XML to Groovy. I need to create a bean for a
>> Groovy class that is annotated with @Immutable.
>>
>> Let's say my class is this:
>>
>> @Immutable
>> class MyImmutableClass {
>> String someString
>> String otherString
>> String anotherString
>> }
>>
>>
>> And I attempt to create a bean like so:
>>
>> beans {
>> myImmutableClass(
>> MyImmutableClass,
>> someString: 'some',
>> otherString: 'other',
>> anotherString: 'another'
>> )
>> }
>>
>> It fails:
>> Invalid property 'someString' of bean class [MyImmutableClass]: Bean
>> property 'someString' is not writable or has an invalid setter method. Does
>> the parameter type of the setter match the return type of the getter?
>>
>> I can do the following, but I then lose the parameter name information
>> that tells me which fields are set to which values:
>>
>> beans {
>> myImmutableClass(
>> MyImmutableClass,
>> 'some',
>> 'other',
>> 'another'
>> )
>> }
>>
>>
>> I can also remove the @Immutable annotation from the class. But let's
>> assume this class comes from somewhere else and I cannot modify it.
>>
>> So what are my options here that combine not modifying the @Immutable
>> class and keeping the parameter names? I know I can combine Groovy and XML
>> configuration and define the bean in XML and then use importBeans in my
>> Groovy code, but is there something I can do that is purely Groovy?
>>
>> I found this issue, which describes my problem:
>> https://issues.apache.org/jira/browse/GROOVY-7078
>>
>> Thanks,
>> Rick
>>
>>
>>
>
Re: Spring Groovy application context and creating @Immutable class beans
Posted by Mario Garcia <ma...@gmail.com>.
Although I think It should be better to discuss this in the Grails mailing
list (they sure have much more experience in Spring+Groovy) I have done a
little test in a Grails app with an immutable (@Immutable) bean:
package a.b.c
@Immutable
class Pagination {
Integer max
}
myBean(a.b.c.Pagination, [max:1001])
and it seems to be working.
Mario
2016-04-11 22:47 GMT+02:00 Rick Venutolo <rv...@digitalenvoy.net>:
> Hi all,
>
> As a fun learning experience I am attempting to move an application's
> Spring configuration from XML to Groovy. I need to create a bean for a
> Groovy class that is annotated with @Immutable.
>
> Let's say my class is this:
>
> @Immutable
> class MyImmutableClass {
> String someString
> String otherString
> String anotherString
> }
>
>
> And I attempt to create a bean like so:
>
> beans {
> myImmutableClass(
> MyImmutableClass,
> someString: 'some',
> otherString: 'other',
> anotherString: 'another'
> )
> }
>
> It fails:
> Invalid property 'someString' of bean class [MyImmutableClass]: Bean
> property 'someString' is not writable or has an invalid setter method. Does
> the parameter type of the setter match the return type of the getter?
>
> I can do the following, but I then lose the parameter name information
> that tells me which fields are set to which values:
>
> beans {
> myImmutableClass(
> MyImmutableClass,
> 'some',
> 'other',
> 'another'
> )
> }
>
>
> I can also remove the @Immutable annotation from the class. But let's
> assume this class comes from somewhere else and I cannot modify it.
>
> So what are my options here that combine not modifying the @Immutable
> class and keeping the parameter names? I know I can combine Groovy and XML
> configuration and define the bean in XML and then use importBeans in my
> Groovy code, but is there something I can do that is purely Groovy?
>
> I found this issue, which describes my problem:
> https://issues.apache.org/jira/browse/GROOVY-7078
>
> Thanks,
> Rick
>
>
>