Usage of BundleContext.getServiceReferences results in failure to activate 
components
-------------------------------------------------------------------------------------

                 Key: FELIX-1754
                 URL: https://issues.apache.org/jira/browse/FELIX-1754
             Project: Felix
          Issue Type: Bug
          Components: Declarative Services (SCR)
    Affects Versions: scr-1.2.0
            Reporter: Matthew Sykes


I'm attempting to move some code from Equinox to Felix that makes use of the 
declarative services 1.1 runtime.  Many of the components in our bundles 
declare multiple 'provide' elements in the service declaration .  In general 
these services consist of a standardized interface in one package and 
extensions to that interface in another.  Depending on the requirements of the 
code using the component, other bundles will declare their components with 
references to either the standardized interface or the extended interface.

The issue I'm seeing is that the Felix SCR fails to activate some components 
because it's failing to resolve references to the service provided by another 
component.  It turns out that the SCR is using 
BundleContext.getServiceReferences instead of 
BundleContext.getAllServiceReferences to locate candidate services when 
resolving references.  Unfortunately, the getServiceReference flavor requires 
that the using bundle have access to all class names under which the target 
service was registered - not just the interface associated with the reference.

Given the use-case I've described and the behavior of Equinox, I believe the 
Felix SCR should be using BundleContext.getAllServiceReferences(..) to resolve 
references and rely on the bundle creator to define the correct imports.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to