Roo 1.0.x was implemented as a single classloader. This required restarting the JVM to accommodate new add-on installation.
As more and more people have started building Roo add-ons, more complex add-on requirements have emerged. These include external JAR dependencies such as JDBC drivers (eg
ROO-435). Further, users have a need to install add-ons from remote repositories without needing to provide a full URL to every add-on.
In addition, many people would like to improve existing functionality in Roo by using strategy or event patterns with existing add-ons. There was no feasible mechanism in Roo 1.0.x to discover collaborators that may be available, particularly if multiple collaborators were available and these changed at runtime.
OSGi provides a comprehensive solution to the above requirements and others emerging for Roo. This task is therefore to do the bare minimum required to shift Roo to an OSGi-based foundation. Substantial refactoring and further optimisations of the Roo code base remain possible beyond the scope of this task, however this task will allow Roo to load and existing base add-ons execute successfully in a fully OSGi-based model.
At an implementation level we will be using Apache Felix with its SCR and OBR support as much as possible. This provides a simple extensibility mechanism for remote add-on repositories to develop.