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)

Reply via email to