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

Reply via email to