Understood! As I said it's not that it's something crucial missing! However
at least some alternative to iPOJO's @Stereotype would be nice.

On Thu, Feb 5, 2015 at 10:03 PM, David Jencks <
david_jen...@yahoo.com.invalid> wrote:

> One of the principles we've tried to keep to in DS is that all the
> information about what to do is in the xml descriptor and we don't do
> significant runtime analysis of capabilities and we definitely don't do
> runtime class scanning.  So it sounds like you are proposing a tectonic
> shift in the philosophy behind DS which is unlikely to happen any time
> soon.  Having dealt with annotation processing for javaee I cannot express
> how strongly I am against runtime annotation processing for DS.
>
> thanks
> david jencks
>
> On Feb 5, 2015, at 3:41 PM, Milen Dyankov <milendyan...@gmail.com> wrote:
>
> > So as I mentioned earlier you have 2 options:
> >
> > (a) build time - which is exactly how @Component annotations are
> processed.
> > Basically treat every class implementing the interface as if it was
> > annotated with @Component and @Service
> >
> > (b) deploy / run time - which is more or less what you suggest although I
> > can imagine different implementations
> >
> > So I fully agree with you that it can be done. But in the context set by
> > the original question:
> >
> > - Is this possible with DS as of now - AFAIK no
> > - is it something that DS/SCR should support - I don't know. I think it
> > could, but again there may be implications I'm not aware of.
> >
> >
> >
> >
> >
> >
> > On Thu, Feb 5, 2015 at 9:29 PM, David Jencks
> <david_jen...@yahoo.com.invalid
> >> wrote:
> >
> >> I still don't understand in your example what is supposed to create an
> >> instance of your button class.
> >>
> >> I think it's pretty odd, but I think with my proposal for extension
> >> annotation processors for DS and metatype annotation processing  in
> bnd, if
> >> you were willing to use DS and mark the button class you actually want
> to
> >> be a real live button with @Component so DS knows enough to create one,
> you
> >> could write an extension processor that would find your @AutoRegister
> >> annotation on the interface in the inheritance hierarchy and add it to
> the
> >> exposed services.
> >>
> >> thanks
> >> david jencks
> >>
> >> On Feb 5, 2015, at 3:21 PM, Milen Dyankov <milendyan...@gmail.com>
> wrote:
> >>
> >>> Agree to some extend. However here is what I meant with a stupid
> example.
> >>> Say I have GUI where I can dynamically add buttons to perform
> operations
> >> on
> >>> something. If I could do
> >>>
> >>> @AutoRegisterComponentsFromClassesImplementingMe
> >>> public interface Button {
> >>> void performActionOn (Something something);
> >>> }
> >>>
> >>> public abstract class AbstractButton implements Button {
> >>>  // some common logic here
> >>> }
> >>>
> >>> then I could say to my not-so-keen-about-osgi colleagues "You know
> what,
> >>> just extend the AbstractButton, add your logic, build (tooling will
> make
> >> it
> >>> a bundle), deploy and your button will appear in the UI"! Again it's
> NOT
> >>> that there is some crucial missing feature in OSGi / DS but rather a
> >> matter
> >>> of convenience!
> >>>
> >>>
> >>>
> >>>
> >>> On Thu, Feb 5, 2015 at 8:46 PM, David Jencks
> >> <david_jen...@yahoo.com.invalid
> >>>> wrote:
> >>>
> >>>> With DS and the spec annotations, if your component class directly
> >>>> implements the interface, it will be registered as a service exposing
> >> that
> >>>> interface.
> >>>>
> >>>> If your class is not a DS component, I'm not sure what you expect to
> >>>> create an instance of your class in order to register it as a
> >> service..  I
> >>>> guess you could register a byte-code weaver that looked for classes
> >>>> implementing your interface of interest, and added byte code that got
> >> the
> >>>> bundle context from the class loader, and registered the instance in
> the
> >>>> service registry, but I don't think you would actually find that very
> >>>> useful as there would be no way to specify service properties in order
> >> to
> >>>> distinguish different instances.  It would certainly interfere with
> any
> >>>> existing component model such as DS or blueprint and probably with any
> >>>> attempt to register a service in code.
> >>>>
> >>>> david jencks
> >>>>
> >>>> On Feb 5, 2015, at 2:37 PM, Milen Dyankov <milendyan...@gmail.com>
> >> wrote:
> >>>>
> >>>>> I may be interpreting Pawel's case wrong but I also have had
> situations
> >>>> in
> >>>>> the past where I wish I was able to somehow mark a interface (by
> using
> >>>>> annotation for example) and basically say "whoever implements that
> >>>>> interface should be automatically registered as a service"! AFAIK
> that
> >> is
> >>>>> not possible with SCR/DS although it may be very convenient in some
> >>>> cases.
> >>>>>
> >>>>> Now if such feature was to be implemented the question is weather it
> >>>> should
> >>>>> happen at run/deploy time (probably expensive) or build time (rather
> a
> >>>>> matter of tooling and not strictly related to DS). However there may
> >> also
> >>>>> be some side effects I have not thought about and perhaps a good
> reason
> >>>> not
> >>>>> to have it.
> >>>>>
> >>>>> Just my 2 cents
> >>>>>
> >>>>> Best,
> >>>>> Milen
> >>>>>
> >>>>> On Thu, Feb 5, 2015 at 8:15 PM, David Jencks
> >>>> <david_jen...@yahoo.com.invalid
> >>>>>> wrote:
> >>>>>
> >>>>>> The default for scr annotations is to expose all the directly
> >>>> implemented
> >>>>>> interfaces.  If you want something else you can explicitly list the
> >>>> classes
> >>>>>> to expose in the @Component annotation.. This is really easy to
> >>>> understand
> >>>>>> from the class itself.  You can re-list an interface implemented by
> a
> >>>>>> superclass or that is a super-interface of a directly implemented
> >>>> interface
> >>>>>> if you want, that won't hurt your class.  Your proposal of "all
> >>>>>> bundle-exported interfaces" seems really restrictive and odd to me,
> >> any
> >>>>>> directly implemented interface from another bundle (say from a spec)
> >>>> would
> >>>>>> force you to not use the default.  To understand what the component
> >>>> exposes
> >>>>>> you would also have to try to figure out what the bundle exports,
> >> which
> >>>> is
> >>>>>> not obvious from the component class itself.
> >>>>>>
> >>>>>> thanks
> >>>>>> david jencks
> >>>>>>
> >>>>>> On Feb 5, 2015, at 1:06 PM, Pawel Pogorzelski <
> >>>>>> pawel.pogorzels...@gmail.com> wrote:
> >>>>>>
> >>>>>>> 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
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> >>>>>> For additional commands, e-mail: users-h...@felix.apache.org
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> http://about.me/milen
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> >>>> For additional commands, e-mail: users-h...@felix.apache.org
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> http://about.me/milen
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> >> For additional commands, e-mail: users-h...@felix.apache.org
> >>
> >>
> >
> >
> > --
> > http://about.me/milen
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org
>
>


-- 
http://about.me/milen

Reply via email to