Hi all,

Currently the Sling launcher (in the launchpad/base module) contains the
Felix framework, the OSGi Core libraries as well as the OSGi Compendium
libraries.

While working on the implementation of the new Declarative Services 1.1
features planned for addition in the OSGi Compendium Specification 4.2 I
ran into a problem with this setup.

Consider a bundle X importing the Declarative Services packages *before*
the new implementation is installed. Both the system bundle (as per the
launchpad/base module) and the Declarative Services implementation
export version 1.0 of the org.osgi.service.component package. This
results in all bundles wiring to the system bundle. Everything is fine.

Now update the Declarative Services bundle which now exports version 1.1
of the org.osgi.service.component package. The Declarative Services
bundle binds to its own export using the latest version available.
Bundle X is still wired to the system bundle because there is no
rewiring taking place.

The consequence is, that the new Declarative Services bundle cannot call
any of the activate or deactivate methods of the components in Bundle X
because the ComponentContext argument is not compatible.

As a fix, I suggest we modify the launchpad/base bundle to *not* provide
the Compendium packages any more. Instead we will expect that either the
Compendium implementation bundles export the packages (as for example
the Apache Felix Declarative Services bundle does) or that the
compendium packages are installed as a bundle.

WDYT ?

Regards
Felix

Reply via email to