Interesting problem. In this case depending on the impl is surely the
easiest solution at least if the impl exactly includes the needed APIs.
I guess it is not a general solution though. If you depend on more than
one impl and they use different versions of the same API you soon end up
in the same situation.
Does this issue already happen with the config admin alone? So does it
use different versions of compendium APIs? If yes I strongly suggest to
solve this directly in config admin as I guess this will cause
problems for anyone using it. So maybe we could either skip this config
admin service version or depend on the impl for some time and switch
back to the API as soon as this is solved in config admin service.
In any case I think we should at least document somewhere why we use an
impl dependency. So a reader of the code who missed the discussion knows
why. This might then be a nice addition to the architectural decisions
page in the wiki.
In general depending on different versions of compendium jars should
even possible if necessary. As we use the "provided" scope the
dependency should not be transitive.
Christian
Am 04.06.2012 18:41, schrieb Guillaume Nodet:
Well, the whole thing started with an issue JB had because there was a
mismatch between the compendium jar (hence the version range) and the
config admin at runtime, and those were incompatible. The problem is
that the compendium is homogeneous, and we may depend on some version
of a given service and other for other services, so using compendium
forbids that. Also, I usually hate having multiple versions of the
same package in my dependency tree when I can avoid it.
On Mon, Jun 4, 2012 at 6:25 PM, Christian Schneider
<[email protected]> wrote:
That is right but is it a big issue to just depend on the whole compendium
jar at build time in maven? The bundle plugin will only import the needed
packages
for runtime anyway.
Christian
Am 04.06.2012 17:41, schrieb Guillaume Nodet:
That's true but unfortunately I'm not aware of any jar providing just the
api for a given osgi service.
On Monday, June 4, 2012, Christian Schneider wrote:
I think we should not depend on an implementation if there is an API. The
implementation can bring in unwanted transitive depencies that are much
worse than managing the package dependencies.
At runtime it can be enough to install the impl of course if it brings
along the api.
Christian
Am 04.06.2012 09:43, schrieb Jean-Baptiste Onofré:
Hi all,
I updated Karaf trunk (3.0) to use OSGi Compendium 4.3.0. It means that
now, Karaf trunk uses both OSGi and OSGi Compendium 4.3.0 (whereas
previously it used OSGi 4.3.0 and OSGi Compendium 4.2.0).
However, to "simplify" version range, I think it makes sense to not
depend from OSGi Compendium but directly from the service implementation
itself (for instance Felix ConfigAdmin, etc). As we already manage the
version of service implementation, I think OSGi compendium dependency is
superfluous.
I raised:
https://issues.apache.org/**jira/browse/KARAF-1518<https://issues.apache.org/jira/browse/KARAF-1518>
WDYT ?
Thanks
Regards
JB
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com