I have recently created a maven plugin that generates blueprint.xml from CDI, JEE and Spring annotations.

https://github.com/cschneider/blueprint-maven-plugin

What makes this different from the blueprint annotations support we already got in aries?
------------------------------------------------------------------------------------------------------------------------

- The blueprint annotations follow the xml style of binding to an exact bean id. The annotations I used by default bind simply by type which is much simpler to manage and more in line with Spring @Autowired and CDI @Inject.
Still they also allow to bind by name using @Named
- The aries blueprint annotations are processed at runtime but create xml under the covers. My plugin on the other hand does all the work at build time. So at runtime you can install into any existing container running blueprint - no additional deps needed. - My plugin uses standard CDI/JEE annotations and where there is no standard (Services) pax cdi annoations. So people using this style can transition from and to real CDI quite easily. People with JEE background also feel at home with this style. - My plugin also supports some spring annotations like @Autowired, @Component, @Value. This allows a very fast migration from spring to blueprint. In fact I used it in a quite big customer project for that case

Sample application
-------------------------

I created an example application that shows how the following features:
- internal wiring
- container managed JPA with transactions
- using and offering OSGi services

https://github.com/cschneider/Karaf-Tutorial/tree/master/tasklist-cdi

Here are the most important classes that show the annotations:
https://github.com/cschneider/Karaf-Tutorial/blob/master/tasklist-cdi/persistence/src/main/java/net/lr/tasklist/persistence/impl/TaskServiceImpl.java
https://github.com/cschneider/Karaf-Tutorial/blob/master/tasklist-cdi/ui/src/main/java/net/lr/tasklist/ui/TaskListServlet.java
https://github.com/cschneider/Karaf-Tutorial/blob/master/tasklist-cdi/persistence/src/main/java/net/lr/tasklist/persistence/impl/InitHelper.java

Here is the generated xml for:
- persistence https://gist.github.com/cschneider/763785e3d4faed89d36b
- ui https://gist.github.com/cschneider/6ef0872919299eb0b774

You can run the example easily in karaf by following the readme.

What is missing ?
-----------------------

Currently I only have support for binding configs from config admin by using the spring @Value annotation. Adding a similar non spring annotation would be simple but I am a bit hesitant to create my own annotations. Does anyone know existing annotations that would
match?

Future at aries?
---------------------

I started with the plugin on github to get fast results. Now for the longer term I would like to put it into a community so there are official releases as well as hopefully contributions by others.
So as blueprint lives at aries this is my first choice.

The plugin is already using Apache License but of course I would have to refactor it to the aries namings and other coding standards.

So what do you think?

Christian

--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

Reply via email to