> On 7 Oct 2015, at 17:36, Ferry Huberts <maili...@hupie.com> wrote: > > > > On 07/10/15 18:22, David Jencks wrote: >> Another use case is where you have set the <ref-name>.cardinality.minimum >> property to the expected number of actual services. >> > > > I can see Tim's case, but this one is rather icky/hackish to me. It implies > knowledge of how the component is going to be deployed. > > Anyway, it's all cleared up now as being by design and I fixed up my code, so > thanks to all.
I do think there’s a case for bnd to give warnings for some combinations, it’s just not as straightforward as “multiple + static = bad”. Please raise a feature request in the issue tracker. Cheers, Neil > >> david jencks >> >>> On Oct 7, 2015, at 12:17 PM, Tim Ward < >>> <mailto:tim.w...@paremus.com>tim.w...@paremus.com >>> <mailto:tim.w...@paremus.com>> wrote: >>> >>> >>> >>> Sent from my iPhone >>> >>>> On 7 Oct 2015, at 18:13, Ferry Huberts <maili...@hupie.com >>>> <mailto:maili...@hupie.com>> wrote: >>>> >>>> >>>> >>>> On 07/10/15 18:01, Neil Bartlett wrote: >>>>>> On 7 Oct 2015, at 13:56, Ferry Huberts <maili...@hupie.com >>>>>> <mailto:maili...@hupie.com>> wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> Cross-posting because I don't know if the situation/problem below is by >>>>>> design, a bug in bnd, or a bug in SCR >>>>>> >>>>>> >>>>>> I have a R6 component that does >>>>>> @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE) >>>>>> >>>>>> This appears to not bind new matching services, because the policy >>>>>> appears to be STATIC by default. >>>>> Yes, static policy has always been the default in DS. You can see this >>>>> right back in the very first DS specification found in OSGi Compendium >>>>> R4.0, section 112.3.3: "The static policy is the most simple policy and >>>>> is the default policy”. Also section 112.10 that gives the XML schema, >>>>> where the reference element has the policy attribute defined as: >>>>> >>>>> <attribute name="policy" type="scr:Tpolicy" default="static" >>>>> use="optional"/> >>>>> >>>>> >>>>>> I did expect the ReferenceCardinality.AT_LEAST_ONE to imply >>>>>> ReferencePolicy.DYNAMIC, just like the bnd annotations did. >>>>> Nope. These are new annotations in a new namespace. There is no reason to >>>>> expect them to have the same behaviour as the bnd annotations. >>>> >>>> However, I challenge you to give me _one_ use-case where >>>> ReferencePolicy.STATIC && ReferencePolicy.(MULTIPLE|AT_LEAST_ONE) makes >>>> sense... >>>> That combination _creates_ a timing dependency, services might or might >>>> not be bound, depending on startup order. >>>> >>> >>> You don't need to be dynamic if your reference is greedy. That will eagerly >>> pick up new services as they arrive too, just restarting the component when >>> it changes. >>> >>> >>>> A warning in bndtools like 'you probably meant to use >>>> ReferencePolicy.DYNAMIC' when havingReferencePolicy.MULTIPLE or >>>> ReferencePolicy.AT_LEAST_ONE would be nice IMHO >>>> >>>>> >>>>>> Changing it to >>>>>> @Reference(policy = ReferencePolicy.DYNAMIC, cardinality = >>>>>> ReferenceCardinality.AT_LEAST_ONE) >>>>>> >>>>>> appears to make it work like I expected. >>>>>> >>>>>> >>>>>> Is this by design? >>>>>> >>>>>> Coming from bnd annotations this - to me - seems like another (breaking) >>>>>> subtlety. >>>>> It’s a subtlety perhaps because the standard annotations are just a >>>>> direct, literal transformation to the XML, whereas the bnd ones tried to >>>>> be “smart”. Yes, this is by design. >>>>> >>>>> It’s certainly not breaking because, again, these are new annotations and >>>>> there is no reason to expect them to do the same thing… >>>>> >>>>> >>>>>> -- >>>>>> Ferry Huberts >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "bndtools-users" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>>> an email to >>>>>> <mailto:bndtools-users+unsubscr...@googlegroups.com>bndtools-users+unsubscr...@googlegroups.com >>>>>> <mailto:bndtools-users+unsubscr...@googlegroups.com>. >>>>>> For more options, visit https://groups.google.com/d/optout >>>>>> <https://groups.google.com/d/optout>. >>>>> >>>>> -- >>>>> Ferry Huberts >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "bndtools-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to bndtools-users+unsubscr...@googlegroups.com >>>> <mailto:bndtools-users+unsubscr...@googlegroups.com>. >>>> For more options, visit https://groups.google.com/d/optout >>>> <https://groups.google.com/d/optout>. >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "bndtools-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to >>> <mailto:bndtools-users+unsubscr...@googlegroups.com>bndtools-users+unsubscr...@googlegroups.com >>> <mailto:bndtools-users+unsubscr...@googlegroups.com>. >>> For more options, visit >>> <https://groups.google.com/d/optout>https://groups.google.com/d/optout >>> <https://groups.google.com/d/optout>. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "bndtools-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to bndtools-users+unsubscr...@googlegroups.com >> <mailto:bndtools-users+unsubscr...@googlegroups.com>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. >> >> -- >> Ferry Huberts > > -- > You received this message because you are subscribed to the Google Groups > "bndtools-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to bndtools-users+unsubscr...@googlegroups.com > <mailto:bndtools-users+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>.