binding-data-codec-dynamic requires javax.inject

Description

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>

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

Assignee

Reporter

Labels

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