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