On Sun, Feb 10, 2019 at 11:20 AM Thomas Driessen < thomas.driessen...@gmail.com> wrote:
> Hi Ray, > > I'm not defining any additional manifest header if that's what you mean. I > have no real control over the bundles I need to scan. > > What I do is registering a BundleTracker that scans a bundle's classes if > its wiring states it is importing the package of the annotation I'm looking > for. > (Can be seen here: > https://github.com/Sandared/flow-osgi/blob/master/flow.osgi.integration/src/main/java/io/jatoms/flow/osgi/integration/FlowOsgiRouteTracker.java > ) > This is precisely the "extender pattern" [1]. > > Those classes usually look something like this: > > @Route("") > @Component(factory="fqcn") > public class MyFancyUI extends Component { > @Reference > SomeService service; > ... > } > So I'm looking into the wiring of the bundle if it has imported the package > "com.vaadin.flow.router" . If so I then scan the bundle's classes for > the @Route annotation (and @RouteAlias). > Classes that have this annotation can later on be instantiated via > ComponentFactory. > > Can I instantiate such a component with the Apache Aries approach and if > so will its reference be injected? I'm not sure if this is done if I'm > registering the instance just as a service. > Let's start with how the classes came to be annotated with @Component, and why that isn't already enough. - Ray [1] https://blog.osgi.org/2007/02/osgi-extender-model.html > > Kind regards, > Thomas > > Am So., 10. Feb. 2019 um 15:38 Uhr schrieb Raymond Auge < > raymond.a...@liferay.com>: > >> Are you implementing this using the extender pattern? If so, I would not >> use DS. I would use something lower level. >> >> There are plenty of good alternatives for doing this, but I would suggest >> looking at Apache Aries Component DSL [1] (it's what is used to implement >> Aries JAXRS Whiteboard). >> >> - Ray >> >> [1] https://github.com/apache/aries/tree/trunk/component-dsl >> >> On Sun, Feb 10, 2019 at 8:01 AM Thomas Driessen via osgi-dev < >> osgi-dev@mail.osgi.org> wrote: >> >>> Hi, >>> >>> I'm currently trying to sketch out a possible better OSGi integration >>> for Vaadin 10+. >>> >>> For this I need to programmatically create DS components in order to >>> make @Route/@RouteAlias annotated classes also DS components. >>> >>> Right now I'm doing this via ComponentFactory and the assumption that >>> all @Route annotated classes are also annotated with >>> @Component(factory="fully qualified class name") >>> >>> I don't think this is the best way to do this. Having to type the fqcn >>> seems rather errorprone to me and therefore I wanted to ask if there is a >>> better way (maybe even a typesafe way) to do this? >>> >>> The code instantiating a component can be seen here: >>> https://github.com/Sandared/flow-osgi/blob/master/flow.osgi.integration/src/main/java/io/jatoms/flow/osgi/integration/FlowOsgiInstantiator.java >>> The class that shall be instantiated can be seen here: >>> https://github.com/Sandared/flow-osgi/blob/master/flow.osgi.simpleui/src/main/java/io/jatoms/flow/osgi/simpleui/MainView.java >>> >>> Any advice is highly appreciated. >>> >>> Kind regards, >>> Thomas >>> _______________________________________________ >>> OSGi Developer Mail List >>> osgi-dev@mail.osgi.org >>> https://mail.osgi.org/mailman/listinfo/osgi-dev >> >> >> >> -- >> *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) >> > -- *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)
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev