binding-data-codec-dynamic requires javax.inject
Description
Environment
None
Activity
Show:
Robert Varga February 24, 2025 at 1:56 PM
Right, so the problem is that the dynamic codec lists javax.inject as required import – a slight difference in behaviour between bundle-plugin and bnd-plugin, where the former would flag it as optional.
At the end of the day, we do not want to use javax.inject at all in OSGi, as we integrate with Service Registry via SCR.
Done
Details
Details
Assignee
Robert Varga
Robert VargaReporter
Ivan Hraško
Ivan HraškoLabels
Components
Fix versions
Affects versions
Priority
Created February 24, 2025 at 1:27 PM
Updated February 25, 2025 at 9:58 AM
Resolved February 25, 2025 at 9:58 AM
odl-toaster
feature in CONTROLLER project can be useful for subscribed notifications demo presentation because of its toaster RPCs and notifications implementation.Currently it fails to install:
opendaylight-user@root>feature:install odl-toaster org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=odl-toaster; type=karaf.feature; version="[11.0.0.SNAPSHOT,11.0.0.SNAPSHOT]"; filter:="(&(osgi.identity=odl-toaster)(type=karaf.feature)(version>=11.0.0.SNAPSHOT)(version<=11.0.0.SNAPSHOT))" [caused by: Unable to resolve odl-toaster/11.0.0.SNAPSHOT: missing requirement [odl-toaster/11.0.0.SNAPSHOT] osgi.identity; osgi.identity=org.opendaylight.controller.samples.sample-toaster-consumer; type=osgi.bundle; version="[11.0.0.SNAPSHOT,11.0.0.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT: missing requirement [org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT] osgi.service; filter:="(objectClass=org.opendaylight.mdsal.binding.api.RpcService)"; effective:=active [caused by: Unable to resolve org.opendaylight.mdsal.binding-dom-adapter/14.0.9: missing requirement [org.opendaylight.mdsal.binding-dom-adapter/14.0.9] osgi.service; filter:="(objectClass=org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree)"; effective:=active [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.opendaylight.yangtools.binding.data.codec.dynamic)(version>=14.0.0)(!(version>=15.0.0)))" [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)"]]]]] at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:433) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:420) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:374) at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:256) at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:399) at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve odl-toaster/11.0.0.SNAPSHOT: missing requirement [odl-toaster/11.0.0.SNAPSHOT] osgi.identity; osgi.identity=org.opendaylight.controller.samples.sample-toaster-consumer; type=osgi.bundle; version="[11.0.0.SNAPSHOT,11.0.0.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT: missing requirement [org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT] osgi.service; filter:="(objectClass=org.opendaylight.mdsal.binding.api.RpcService)"; effective:=active [caused by: Unable to resolve org.opendaylight.mdsal.binding-dom-adapter/14.0.9: missing requirement [org.opendaylight.mdsal.binding-dom-adapter/14.0.9] osgi.service; filter:="(objectClass=org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree)"; effective:=active [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.opendaylight.yangtools.binding.data.codec.dynamic)(version>=14.0.0)(!(version>=15.0.0)))" [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)"]]]] at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ... 12 more Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT: missing requirement [org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT] osgi.service; filter:="(objectClass=org.opendaylight.mdsal.binding.api.RpcService)"; effective:=active [caused by: Unable to resolve org.opendaylight.mdsal.binding-dom-adapter/14.0.9: missing requirement [org.opendaylight.mdsal.binding-dom-adapter/14.0.9] osgi.service; filter:="(objectClass=org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree)"; effective:=active [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.opendaylight.yangtools.binding.data.codec.dynamic)(version>=14.0.0)(!(version>=15.0.0)))" [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)"]]] at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ... 13 more Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.opendaylight.mdsal.binding-dom-adapter/14.0.9: missing requirement [org.opendaylight.mdsal.binding-dom-adapter/14.0.9] osgi.service; filter:="(objectClass=org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree)"; effective:=active [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.opendaylight.yangtools.binding.data.codec.dynamic)(version>=14.0.0)(!(version>=15.0.0)))" [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)"]] at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ... 14 more Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.opendaylight.yangtools.binding.data.codec.dynamic)(version>=14.0.0)(!(version>=15.0.0)))" [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)"] at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ... 15 more Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)" at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ... 16 more Error executing command: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=odl-toaster; type=karaf.feature; version="[11.0.0.SNAPSHOT,11.0.0.SNAPSHOT]"; filter:="(&(osgi.identity=odl-toaster)(type=karaf.feature)(version>=11.0.0.SNAPSHOT)(version<=11.0.0.SNAPSHOT))" [caused by: Unable to resolve odl-toaster/11.0.0.SNAPSHOT: missing requirement [odl-toaster/11.0.0.SNAPSHOT] osgi.identity; osgi.identity=org.opendaylight.controller.samples.sample-toaster-consumer; type=osgi.bundle; version="[11.0.0.SNAPSHOT,11.0.0.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT: missing requirement [org.opendaylight.controller.samples.sample-toaster-consumer/11.0.0.SNAPSHOT] osgi.service; filter:="(objectClass=org.opendaylight.mdsal.binding.api.RpcService)"; effective:=active [caused by: Unable to resolve org.opendaylight.mdsal.binding-dom-adapter/14.0.9: missing requirement [org.opendaylight.mdsal.binding-dom-adapter/14.0.9] osgi.service; filter:="(objectClass=org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree)"; effective:=active [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-osgi/14.0.9] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.opendaylight.yangtools.binding.data.codec.dynamic)(version>=14.0.0)(!(version>=15.0.0)))" [caused by: Unable to resolve org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9: missing requirement [org.opendaylight.yangtools.binding-data-codec-dynamic/14.0.9] osgi.wiring.package; filter:="(osgi.wiring.package=javax.inject)"]]]]] opendaylight-user@root>