Alright, thanks Neil. I can see can see some corner cases where this
behavior could would be desired. It's just the default that bothers me - I
think by default a service should be registered under all the
bundle-exported interfaces. After all, if you want to hide implementation
you do it differently - by defining a public interface and hiding the rest
in private packages. The same with lookups - if you want to get a specific
instance then OSGi filters is the way to go. So, if you're relaying on not
registering under all interfaces probably means there's something wrong in
your design or the container you run in.

Paweł

On Thu, Feb 5, 2015 at 5:37 PM, Neil Bartlett <njbartl...@gmail.com> wrote:

> Services in OSGi are intended so that you can implement many interfaces
> but publish under a subset. Therefore the set of published services must be
> listed explicitly.
>
> Neil
>
>
> On Thursday, 5 February 2015 at 16:15, Pawel Pogorzelski wrote:
>
> > Thanks Ferry, it indeed works. Is there any way of doing it without
> > specifying all the object supertypes during the registration? Maybe using
> > Felix SCR annotations instead of OSGi ones?
> >
> > Cheers,
> > Pawel
> >
> >
> >
> > On Thu, Feb 5, 2015 at 5:02 PM, Ferry Huberts <maili...@hupie.com>
> wrote:
> >
> > >
> > >
> > > On 05/02/15 16:59, Pawel Pogorzelski wrote:
> > >
> > > > Guys,
> > > > I have a generic interface IRepository<T> extended by
> IAppleRepository,
> > > > IOrangeRepository and so on. Concrete implementations like
> AppleRepository
> > > > are registered in the container with non-generic interfaces like
> > > > IAppleRepository. Is it possible to tell DS engine I need every
> service
> > > > sublassing IRepository? Corresponding line in my component.xml looks
> like
> > > > follows:
> > > >
> > > > <reference name="Repository" cardinality="0..n" policy="dynamic"
> > > > interface="com.Whatever.IRepository" bind="addRepository"
> > > > unbind="removeRepository"/>
> > > >
> > > > but it doesn't work. I'm on Felix 4.4.1.
> > >
> > >
> > > Then the bundles don't advertise the IRepository interface but their
> > > subclass(es).
> > >
> > > Make the bundles advertise IRepository and it'll work.
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> > > For additional commands, e-mail: users-h...@felix.apache.org
> > >
> >
> >
> >
>
>
>

Reply via email to