Does it make sense to allow multiple
versions of a fragment to attach to the same host at the same time? The
OSGi specification currently does not prohibit this. Scenarios that
fragments are typically used for, native code and NLS properties, do not
usually want multiple versions of a fragment attached to the same host.
This is a little different than the current "singleton"
concept in OSGi. Consider the following scenario:
There is a bundle "my.bundle.library"
version 1.0.0 that provides a simple library (no native code). On
some platforms native code may be delivered to enhance performance or provide
platform specific support. For example, on linux x86 there could
be a fragment bundle my.bundle.library.linux.x86 that delivers native code
that can only be used on an x86 linux platform.
What happens if more than one version
of the my.bundle.library.linux.x86 fragment are installed that can resolve
to the same host?
In Equinox it all depends on the order
in which the fragment bundles were installed. The framework searches
the resolved fragment bundles for native code in the order they were installed.
If 1.0.0 version of my.bundle.library.linux.x86 is installed first
it will always be searched before version 1.0.1. This will force
the old 1.0.0 native code to be loaded instead of the 1.0.1 version. In
this case it can be considered a configuration error. The management
agent probably should have updated the my.bundle.library.linux.x86 to version
1.0.1 instead of installing a completely new version and leaving the 1.0.0
But is this really the desired behavior?
I ask this here before going to OSGi because I want to know if current
Equinox users/developers are depending on this behavior. Are there
any scenarios we can think of that depend on multiple versions of the same
fragment being attached to the same host bundle at the same time?
If you are interested in seeing where
this behavior can cause issues see https://bugs.eclipse.org/bugs/show_bug.cgi?id=182805.