Thanks again Robert,

> I'm not sure about the reason behind it, but I think that the
> Felix-specific SCR annotations predate the OSGi spec for annotations.


That occurred to me, but the naming was so similar that I ignored it. SCR has 
been very inspirational then!
In that case, would it be an idea to extend the annotation’s target to methods 
as well as fields?

> Hm, have you tried setting the property annotation on the class,
> rather than a field?


In my case, the value must be computed and retrieved from an external source 
(the first time) but can then be cached and expected not to change, which is 
why I have a service to provide it. I wonder how I could achieve that with 
configuration?

Many thanks,
Dan.

On 2 Nov 2013, at 13:57, Robert Munteanu <[email protected]> wrote:

> On Sat, Nov 2, 2013 at 3:50 PM, Daniel McGreal <[email protected]> wrote:
>> Hi Robert,
>> 
>> Thanks for your reply. I was not actually aware the plugin generated the 
>> methods, that’s very helpful!
>> 
>> I have implemented the bind method in such a manner, but am forced to have a 
>> pointless (and potentially destructively misleading) field that I can’t 
>> prevent other people from using and therefore have to document that it’s not 
>> to be used or put effort into writing the class to ensure it’s null and 
>> thread safe on the reference - a task that would be implicit if the field 
>> never existed. To illustrate, when all is well in my class I have to have a 
>> warning that the field is unused, whereas what I need is a warning if it is!
> 
> Hm, have you tried setting the property annotation on the class,
> rather than a field? You might need to use a holder @Properties
> annotation if you have more than one annotation.
> 
>> 
>> I am curious as to the rationale of it being a field annotation rather than 
>> a method (or method + field), as it must have been a conscious choice to 
>> deviate from the way the OSGi spec does it.
> 
> I'm not sure about the reason behind it, but I think that the
> Felix-specific SCR annotations predate the OSGi spec for annotations.
> 
> Robert
> 
>> 
>> Best, Dan.
>> 
>> 
>> On 2 Nov 2013, at 13:43, Robert Munteanu <[email protected]> wrote:
>> 
>>> Hi Dan,
>>> 
>>> On Sat, Nov 2, 2013 at 3:12 PM, Daniel McGreal <[email protected]> wrote:
>>>> Hi Felix users,
>>>> I wonder if anyone knows why the Felix @Reference annotations are valid on 
>>>> fields, but not methods, whereas the opposite is true for the OSGi 
>>>> standard @Reference annotation.
>>>> I would very much like to have a service bound, which I don’t keep a 
>>>> reference to in the rest of my class (so that I can guarantee that code in 
>>>> the rest of the class doesn’t depend directly on the reference). For 
>>>> example:
>>>> 
>>>> int value;
>>>> private void bindValueGetter(ValueGetter s){
>>>>       value = s.getValue();
>>>> }
>>>> 
>>>> With the annotation on the field, I am forced to have a reference to the 
>>>> ValueGetter, which might mislead programmers into using it - without the 
>>>> reference there I can just keep the cached values when the service arrives 
>>>> the first time and not have to document, etc that it might be null.
>>> 
>>> The maven-scr-plugin ( and I think the ant task as well ) generates a
>>> 'bindValueGetter' method automatically if you don't have it in your
>>> class. If you implement it yourself, you can control its behaviour,
>>> just like in your snippet above.
>>> 
>>> Robert
>>> 
>>>> 
>>>> Thanks, Dan.
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]

Reply via email to