Hi Jean-Baptiste,

Well the issue is that karaf 4.3.6 does not wire package org.apache.cxf version 
3.4.5 with an import package of org.apache.cxf with version range [3.4,3.4]. 

I also tried the vanilla karaf 4.3.6:
If I install camel-cxf via the feature resolver, it will install CXF 3.4.0 with 
it (and everything wires). If I remove cxf 3.4.0 and install cxf 3.4.5, the 
camel-cxf bundles don't wire anymore:

karaf@root()> feature:repo-add camel 3.14.2
karaf@root()> feature:install camel-cxf

Installs CXF 3.4.0. After uninstalling CXF 3.4.0 and installing CXF 3.4.5 
instead, camel-cxf-bundles are unwired
karaf@root()> diag 161
camel-cxf-transport (161)
-------------------------
Status: Installed
Unsatisfied Requirements:
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.binding.soap)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.common.injection)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.common.logging)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.common.util)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.configuration)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.configuration.spring)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.headers)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.helpers)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.interceptor)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.io)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.message)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.phase)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.security)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.service.model)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.transport)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.workqueue)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.cxf.ws.addressing)(version>=3.4.0)(version<=3.4.0))
[org.apache.camel.camel-cxf-transport [161](R 161.0)] osgi.wiring.package; 
(&(osgi.wiring.package=org.apache.camel.component.cxf.transport.blueprint)(version>=3.14.0)(!(version>=3.15.0)))

Even though the packages are there (in version 3.4.5):
karaf@root()> package:exports -p org.apache.cxf.binding.soap
Package Name                                | Version | ID  | Bundle Name
--------------------------------------------+---------+-----+------------------------------------
org.apache.cxf.binding.soap.blueprint       | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.interceptor     | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.jms.interceptor | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.model           | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.saaj            | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.spring          | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.wsdl.extensions | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap.wsdl11          | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap
org.apache.cxf.binding.soap                 | 3.4.5   | 307 | 
org.apache.cxf.cxf-rt-bindings-soap

Do you think this is a bug in Karaf? I checked the OSGi spec, but it is not too 
clear to me about what this is supposed to wire.

Best regards
Stephan

-----Original Message-----
From: Jean-Baptiste Onofré <j...@nanthrax.net> 
Sent: Tuesday, 12 April 2022 11:20
To: users@camel.apache.org; u...@karaf.apache.org
Subject: [SPAM] Re: Wiring issues with camel-cxf 3.14.2 and CXF 3.4.5 on Karaf 
4.3.6

Hi Stephan,

About the version range, [3.4,3.4] includes 3.4.5, so it's normal that it 
wires. [3.4.4,3.4.4] will exclude 3.4.5, but it will include 3.4.4.x.
 
filter:="(&(osgi.wiring.package=org.apache.cxf)(version>=3.4.0)(version<=3.4.0))"
will actually exclude 3.4.5 (but again, it could include 3.4.0.x).

About CXF import range, I already removed <repository/>, so, it would make 
sense to use a "flexible" range, like [3.4,3.5).

Regards
JB

On Tue, Apr 12, 2022 at 9:39 AM Siano, Stephan <stephan.si...@sap.com.invalid> 
wrote:
>
> Hi,
>
> I am trying to install camel-cxf 3.14.2 together with CXF 3.4.5 on a custom 
> distribution of Karaf 4.3.6, but the camel-cxf and camel-cxf-transport 
> bundles do not wire.
>
> The problem is that the CXF packages are imported by the camel-cxf bundles 
> with an import range of [3.4,3.4] which does not wire with the bundles CXF 
> 3.4.5 exports (Karaf translates the import range into  
> filter:="(&(osgi.wiring.package=org.apache.cxf)(version>=3.4.0)(version<=3.4.0))",
>  which would only match version 3.4.0, but not 3.4.5).
>
> The issue was introduced with 
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FCAMEL-17137&amp;data=04%7C01%7Cstephan.siano%40sap.com%7C608acdcc2479427861ca08da1c65a0a6%7C42f7676cf455423c82f6dc2d99791af7%7C0%7C0%7C637853520169794077%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=Q0EWbpGBQRNO5yJGYe5p4p6FVFAVbKWVs%2Fd5WlTpjk4%3D&amp;reserved=0
>  and I think this was supposed to restrict the import range to any 3.4 
> version (but for my gut feeling the filter for that would have to be 
> “[3.4,3.5)”). Rastislav Papp has added the same issue to the incident, but I 
> am not sure if that was noted by someone.
>
> Do determine what to do as a follow up I have a few questions:
> To the karaf experts:
> Is the assumption correct that an import range of [3.4,3.4] should not wire 
> to a package with version 3.4.5?
> Is there a setting I didn’t set in my custom distribution that might make 
> this work?
>
> To the camel experts:
> Wouldn’t it be better to change the CXF import range to [3.4,3.5) or was that 
> avoided on purpose?
> With that change the wiring issues are resolved.
>
> Best regards
> Stephan

Reply via email to