Hi Tim,

I added this plugin repository and change the bnd.version property to 4.2.0-SNAPSHOT, but still get errors during the build with eroor message "No plugin found for prefix 'bnd-indexer' ..."
Maven complains about several metadata being invalid, e.g.:

The metadata /home/gitpod/.m2/repository/biz/aQute/bnd/bnd-maven-plugin/4.2.0-SNAPSHOT/maven-metadata-Bnd Snapshots.xml is invalid The metadata /home/gitpod/.m2/repository/biz/aQute/bnd/bnd-maven-plugin/4.2.0-SNAPSHOT/maven-metadata-Bnd Snapshots.xml is invalid The POM for biz.aQute.bnd:bnd-maven-plugin:jar:4.2.0-20190215.224729-106 is invalid
...

You can have a look at the workspace and try it for yourself if you want: https://gitpod.io#snapshot/9f4e97ad-0dd3-4360-8702-de0fedf9e51f

Just type "resolve app" in the command line.

Kind regards,
Thomas



------ Originalnachricht ------
Von: "Tim Ward" <tim.w...@paremus.com>
An: "Thomas Driessen" <thomas.driessen...@gmail.com>
Cc: "Neil Bartlett" <njbartl...@gmail.com>; "OSGi Developer Mail List" <osgi-dev@mail.osgi.org>
Gesendet: 18.02.2019 10:53:23
Betreff: Re: [osgi-dev] Clarification on reference behavior regarding field injection

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/

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>
An: "Thomas Driessen" <thomas.driessen...@gmail.com>; "OSGi Developer Mail List" <osgi-dev@mail.osgi.org>
Cc: "Tim Ward" <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> 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>
An: "Thomas Driessen" <thomas.driessen...@gmail.com>; "OSGi Developer Mail List" <osgi-dev@mail.osgi.org>
Cc: "Raymond Auge" <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 changesReluctant 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 instanceAn 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 servicesBind to nothing if no matching services are availableA multiple reference bound to nothing will behave exactly like an optional componentA 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 servicesBind to nothing if no matching services are availableAn “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 servicesMake 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> 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>
An: "Thomas Driessen" <thomas.driessen...@gmail.com>; "OSGi Developer Mail List" <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> 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
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
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
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to