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
)

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.

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)
>
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to