[ 
https://issues.apache.org/jira/browse/FELIX-6161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16885627#comment-16885627
 ] 

Arnoud Glimmerveen commented on FELIX-6161:
-------------------------------------------

I have made an attempt to address the observed problem (see 
[^FELIX-6161.patch]). Main change is that filtering happens by the service 
registry, rather than inside the ServiceListener.

All tests pass on my machine, and solves the issue that I observed.

Looking at the history I found that the approach to filtering inside the 
listener was introduced when fixing FELIX-4964. Looking at that original 
problem description I think my changes should continue to address that use case 
as well, but I am not entirely sure. Is this something perhaps [~djencks] could 
look in to?

> SCR: Method of resolving references limits Service ListenerHook 
> implementations
> -------------------------------------------------------------------------------
>
>                 Key: FELIX-6161
>                 URL: https://issues.apache.org/jira/browse/FELIX-6161
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-2.1.16
>            Reporter: Arnoud Glimmerveen
>            Priority: Major
>         Attachments: FELIX-6161.patch
>
>
> When experimenting with creating a Service ListenerHook to realise a 
> [providing a service on demand 
> pattern|https://osgi.org/specification/osgi.core/7.0.0/framework.servicehooks.html#d0e45721],
>  I noticed that references from components managed by Felix SCR were not 
> showing up as expected: When a reference declares a target filter, that 
> target filter is not included in the ListenerInfo provided to the 
> ListenerHook. As a consequence the ListenerHook is unable to create a 
> matching service.
> Source of the observed behaviour is how SCR tracks references, specifically 
> that it opens a ServiceListener for just the className and performs the 
> matching of the target filter inside the ServiceListener. This approach 
> unfortunately hides the target filter from the Service ListenerHook and thus 
> the Service ListenerHook will have insufficient information to create a 
> matching service.
> Also look at the discussion on the dev mailing list: 
> [https://www.mail-archive.com/dev@felix.apache.org/msg48657.html] 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to