Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
scr-1.0.0, scr-1.0.2, scr-1.0.4, scr-1.0.6, scr-1.0.8, scr-1.2.0, scr-1.4.0, webconsole-3.1.0
-
None
Description
I've been playing with the Components plugin of the Web Console and it work perfectly with the Felix SCR implementation. When I switched to ProSyst/Equinox implementation (they are basically the same) I found a small problem.
When I disable a component, it's ID becomes -1 and I cannot enable it anymore. As long as I disable components all their IDs becomes -1.
I opened the OSGi r4.2 specification to see if there is a reason for this behaviour. The JavaDoc for ComponentConstants states for the component ID, that
"The value of this property is assigned by the Service Component Runtime when a component configuration is created."
In part 112.6 Component Properties, the specification says, that 'component.id' property is always added by the SCR but for "Each component configuration".
When a component is disabled or uninstalled, there is no configuration - it's just a component definition. So the SCR is not required to assign ID.
As for the Web Console we can easily fix the problem by using the pair bundle + component name for identification, instead of ID. However, since Apache SCR API is becoming recommended OSGi API, it would be better to define a mature and compatible API.