Description
With Karaf 4, we can construct feature much better.
Currently, camel-cxf feature explicitly depends on cxf-http-jetty feature and this makes using the component with Undertow problematic.
Here's how it's done in CXF 3.2:
<feature name="cxf-http-provider" version="${project.version}"> <feature dependency="true" version="${project.version}">cxf-http-jetty</feature> <requirement> cxf.http.provider </requirement> </feature> <feature name="cxf-http-jetty" version="${project.version}"> <feature version="${project.version}">cxf-http</feature> <feature version="[7,10)">jetty</feature> <bundle start-level="40">mvn:org.apache.cxf/cxf-rt-transports-http-jetty/${project.version}</bundle> <capability> cxf.http.provider;name=jetty </capability> </feature>
and you have additional:
<feature name="cxf-http-undertow" version="${project.version}"> <feature version="${project.version}">cxf-http</feature> <feature>pax-http-undertow</feature> <bundle start-level="40">mvn:org.apache.cxf/cxf-rt-transports-http-undertow/${project.version}</bundle> <capability> cxf.http.provider;name=undertow </capability> </feature>
So camel-cxf feature should look like this:
<feature name='camel-cxf' version='${project.version}' resolver='(obr)' start-level='50'> <feature version='${project.version}'>camel-blueprint</feature> <feature version='${project.version}'>camel-spring</feature> <feature version='${cxf-version-range}'>cxf-core</feature> <feature version='${cxf-version-range}'>cxf-jaxrs</feature> <feature version='${cxf-version-range}'>cxf-jaxws</feature> <feature version='${cxf-version-range}'>cxf-http-provider</feature> <feature version='${cxf-version-range}'>cxf-databinding-jaxb</feature> <feature version='${cxf-version-range}'>cxf-bindings-soap</feature> <bundle>mvn:org.apache.camel/camel-http-common/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-cxf-transport/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-cxf/${project.version}</bundle> </feature>
so cxf-http-jetty dependency → cxf-http-provider dependency.
The problem is that CXF 3.1.x doesn't have that... So we have to ensure CXF features provide this in our branches.