On Wed, May 15, 2019 at 4:45 PM Markus Rathgeb <[email protected]> wrote:
> Thanks a lot! > > Am Mi., 15. Mai 2019 um 21:14 Uhr schrieb David Jencks > <[email protected]>: > > > > for instance, from R7 cmpn… > > > > 112.3.10 Selecting Target Services > > > > … > > • The filter is manifested as a component property called the > target property. The target property can also be set by property and > properties elements, see Property and Properties Elements on page 339. The > deployer can also set the target property by establishing a configuration > for the component which sets the value of the target property. This allows > the deployer to override the target property in the component description. > See Target Property on page 357 for more information. > Let me further bolster that quote with a link to the official web version [1] for your convenient perusal. - Ray [1] https://osgi.org/specification/osgi.cmpn/7.0.0/service.component.html#service.component-selecting.target.services > > > > also 112.6.2.1 > > > > Hope this helps > > > > David Jencks > > > > > On May 15, 2019, at 10:28 AM, Markus Rathgeb <[email protected]> > wrote: > > > > > > Hi Tim, > > > > > > can you point me to the part of the spec that states that service > configuration properties can be used to set such fields (e.g. target > filter)? > > > I just know that it works ;) > > > > > > Best regards, > > > Markus > > > > > > Tim Ward <[email protected]> schrieb am Mi., 15. Mai 2019, 15:45: > > > Declarative Services is amazing, so this is trivially easy to do. In > this case you should add the configuration property > > > > > > service.target > > > > > > to your configuration dictionary with the value being an LDAP filter > selecting the service you want to inject. > > > > > > Note that “service” is the name of your reference (it defaults to the > field name) and that if your reference has a different name (e.g. if you > change the name of the field) then the name of the property will change too. > > > > > > For example: > > > > > > service.target=(foo=bar) > > > > > > Inject me with a MyInterfaceB which has the service property foo equal > to bar. > > > > > > All the best, > > > > > > Tim > > > > > >> On 15 May 2019, at 14:35, Matthias Leinweber > <[email protected]> wrote: > > >> > > >> Hello Karaf Experts, > > >> > > >> i am trying to isolate services from each other. > > >> > > >> For Example you have a component: > > >> > > >> @Component( > > >> configurationPid = "MyInterfacA.factory", > > >> configurationPolicy = ConfigurationPolicy.REQUIRE, > > >> public Class MyInterfaceAImpl implements MyInterfacA{ > > >> > > >> @Reference > > >> MyInterfaceB service; > > >> > > >> ...} > > >> > > >> During runtime I create multiple services from type MyInterfaceB and > multiple componentes of MyInterfaceAImpl with configadmin. > > >> Depending on the configuration of MyInterfaceAImpl I want to filter > which MyInterfaceB implementation is injected. > > >> > > >> I thought about FindHook but there I dont see a way how to get the > information which service from the bundle is requesting the reference. > > >> > > >> Is there any chance to do this, or do I have to go for an alternative > design. Or a better way to isolate services from another? > > >> > > >> > > >> Best regards, > > >> Matthias > > > > > > -- *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)
