> When I change the version number of bnd to 4.2.0 in the standard enRoute 
> setup, then some of the bnd-plugins can not be found by maven.

That’s because and 4.2.0 isn’t released yet - you need to add a plugin 
repository containing 4.2.0-SNAPSHOT (which is also the version you should be 
using. If you look at the readme for the bnd repo on GitHub you can see the 
repo url is https://bndtools.jfrog.io/bndtools/libs-snapshot/ 
<https://bndtools.jfrog.io/bndtools/libs-snapshot/> 

Tim

> On 18 Feb 2019, at 10:51, Thomas Driessen <thomas.driessen...@gmail.com> 
> wrote:
> 
> Hi Neil,
> 
> thanks for this small history lesson on OSGi. You live, you learn. The why is 
> in most cases so much more interesting than the what  :)
> 
> I will open an issue on Github then for bnd. 
> 
> Kind regards,
> Thomas
> 
> ------ Originalnachricht ------
> Von: "Neil Bartlett" <njbartl...@gmail.com <mailto:njbartl...@gmail.com>>
> An: "Thomas Driessen" <thomas.driessen...@gmail.com 
> <mailto:thomas.driessen...@gmail.com>>; "OSGi Developer Mail List" 
> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>>
> Cc: "Tim Ward" <tim.w...@paremus.com <mailto:tim.w...@paremus.com>>
> Gesendet: 18.02.2019 10:44:14
> Betreff: Re: [osgi-dev] Clarification on reference behavior regarding field 
> injection
> 
>> 
>> 
>> On Mon, Feb 18, 2019 at 9:39 AM Thomas Driessen via osgi-dev 
>> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>> wrote:
>> Hi Tim,
>> 
>> as always thanks for your super detailed answer! 
>> 
>> Just two more questions on this topic:
>> 
>> 1) Out of curiosity: do you know why the decision was made to make the 
>> default for @Reference List<ITest> static, reluctant? For 0/1..1 this makes 
>> sense to me, but for me an expected default behavior for 0/1..n references 
>> would have been dynamic, greedy, so that I end up with some services isntead 
>> of probably none.
>> 
>> The default is reluctant because "greedy" did not exist until DS 1.2. If the 
>> default had been made greedy at that time, components coded before DS 1.2 
>> would have seen a substantial change in behaviour that could be considered 
>> non-backwards-compatible.
>> 
>> Static has *always* been the default over dynamic, because dynamic forces 
>> the developer to understand thread safety and to code the component much 
>> more cautiously. Static is simple and safe.
>>  
>> 
>> 2) The observed Exception for optional/dynamic/reluctant: Is it intended? I 
>> tried to switch to bnd 4.2.0 to see if this exxception occurs there too, but 
>> was unable to do so. When I change the version number of bnd to 4.2.0 in the 
>> standard enRoute setup, then some of the bnd-plugins can not be found by 
>> maven.
>> 
>> Probably not expected, this smells like a bug.
>>  
>> 
>> Kind regards,
>> Thomas
>> 
>> ------ Originalnachricht ------
>> Von: "Tim Ward" <tim.w...@paremus.com <mailto:tim.w...@paremus.com>>
>> An: "Thomas Driessen" <thomas.driessen...@gmail.com 
>> <mailto:thomas.driessen...@gmail.com>>; "OSGi Developer Mail List" 
>> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>>
>> Cc: "Raymond Auge" <raymond.a...@liferay.com 
>> <mailto:raymond.a...@liferay.com>>
>> Gesendet: 18.02.2019 10:15:54
>> Betreff: Re: [osgi-dev] Clarification on reference behavior regarding field 
>> injection
>> 
>>> Hi Thomas,
>>> 
>>> Just to clarify, the behaviour that you see with static reluctant services 
>>> will always look “odd” for cardinalities other than mandatory, and what 
>>> you’ve recorded is 100% correct behaviour.
>>> 
>>> Static references force the component to be re-created if the value of the 
>>> reference changes
>>> Reluctant references avoid rebinding the service unless it is required
>>> 
>>> Therefore:
>>> 
>>> An optional reference bound to nothing will never bind to anything again 
>>> (unless the component is re-created for another reason) because having zero 
>>> references is valid and you are reluctant to re-create the component 
>>> instance
>>> An optional reference bound to a service will not change until that service 
>>> is unregistered (ignoring all new services), at which point it will either:
>>> Pick up the highest ranked of any matching registered services
>>> Bind to nothing if no matching services are available
>>> A multiple reference bound to nothing will behave exactly like an optional 
>>> component
>>> A multiple reference bound to one or more services will not change until 
>>> any of the bound services are unregistered (ignoring all new services), at 
>>> which point it will either:
>>> Pick up all the available registered services
>>> Bind to nothing if no matching services are available
>>> An “at least one" reference bound to one or more services will not change 
>>> until any of the bound services are unregistered (ignoring all new 
>>> services), at which point it will either:
>>> Pick up all the available registered services
>>> Make the component unsatisfied
>>> 
>>> 
>>> The end result of this is that references that can accept zero will tend to 
>>> zero over time, and then tend to stay with zero bound references. At least 
>>> one references will tend to a small number of “stable” services with new 
>>> services ignored.
>>> 
>>> In general references of these types should be dynamic or greedy (or both).
>>> 
>>> Best Regards,
>>> 
>>> Tim
>>> 
>>>> On 18 Feb 2019, at 09:38, Thomas Driessen via osgi-dev 
>>>> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>> wrote:
>>>> 
>>>> Oh Sorry :/
>>>> 
>>>> Those combinations with cardinalities optional/mandatory have been 
>>>> assigned to ITest, those with multiple/at_least_one have been assigned to 
>>>> List<ITest>.
>>>> 
>>>> I didn't think it makes sense to assign them vice versa, e.g., ITest with 
>>>> multiple or List<ITest> with mandatory? Or am I wrong? If so, in what case 
>>>> would you use such a combination?
>>>> 
>>>> Kind regards,
>>>> Thomas
>>>> 
>>>> ------ Originalnachricht ------
>>>> Von: "Raymond Auge" <raymond.a...@liferay.com 
>>>> <mailto:raymond.a...@liferay.com>>
>>>> An: "Thomas Driessen" <thomas.driessen...@gmail.com 
>>>> <mailto:thomas.driessen...@gmail.com>>; "OSGi Developer Mail List" 
>>>> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>>
>>>> Gesendet: 16.02.2019 17:42:19
>>>> Betreff: Re: [osgi-dev] Clarification on reference behavior regarding 
>>>> field injection
>>>> 
>>>>> You're chart doesn't appear to list _which_ field (Reference) was 
>>>>> associated with any given line (collection vs. scalar). It makes a 
>>>>> difference.
>>>>> 
>>>>> - Ray
>>>>> 
>>>>> On Sat, Feb 16, 2019 at 9:15 AM Thomas Driessen via osgi-dev 
>>>>> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>> wrote:
>>>>> Hi,
>>>>> 
>>>>> I'm trying to get an overview over the effects of different combinations 
>>>>> of cardinality, policy and policyOption within a @Reference annotation 
>>>>> for a field.
>>>>> 
>>>>> My Example looks like this:
>>>>> 
>>>>> @Component 
>>>>> public class MyComp{
>>>>>   @Reference(...)
>>>>>   ITest myTest;
>>>>> 
>>>>>   @Reference(...)
>>>>>   List<ITest> myTests;
>>>>> }
>>>>> 
>>>>> and the observed behavior for this setup with different combinations of 
>>>>> the above named properties is:
>>>>> <image.png>
>>>>> 
>>>>> I'm especially interested in the yellow marked cases: Is this an intended 
>>>>> behavior?
>>>>> 
>>>>> Kind regards,
>>>>> Thomas
>>>>> _______________________________________________
>>>>> OSGi Developer Mail List
>>>>> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
>>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev 
>>>>> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
>>>>> 
>>>>> -- 
>>>>> Raymond Augé <http://www.liferay.com/web/raymond.auge/profile> 
>>>>> (@rotty3000)
>>>>> Senior Software Architect Liferay, Inc. <http://www.liferay.com/> 
>>>>> (@Liferay)
>>>>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org/> 
>>>>> (@OSGiAlliance)
>>>> _______________________________________________
>>>> OSGi Developer Mail List
>>>> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev 
>>>> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
>> _______________________________________________
>> OSGi Developer Mail List
>> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
>> https://mail.osgi.org/mailman/listinfo/osgi-dev 
>> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to