[ 
https://issues.apache.org/jira/browse/FELIX-5453?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen Daanen updated FELIX-5453:
---------------------------------
    Description: 
If you have multiple aspects on a service with interface X and one of the 
aspects with a lower rank is removed, the service requiring service X does not 
get the swap callback.

See the attached Activator with example code.
The swap method is not called when 'aspect1' is removed.
Actual output of running the activator:
{noformat}
Add: XImpl

Swap old: XImpl
Swap new: Aspect1

Swap old: Aspect1
Swap new: Aspect2

Swap old: Aspect2
Swap new: XImpl
{noformat}

I can imagine why swap is not called, because for ServiceRequiringX Aspect1 
does not get really 'swapped' (the service stays Aspect2) But is there any way 
to find out this is happening?


  was:
If you have multiple aspects on a service with interface X and one of the 
aspects with a lower rank is removed, the service requiring service X does not 
get the swap callback.

See the attached Activator with example code.
The swap method is not called when 'aspect1' is removed.
Actual output of running the activator:
{noformat}
Add: XImpl

Swap old: XImpl
Swap new: Aspect1

Swap old: Aspect1
Swap new: Aspect2

Swap old: Aspect2
Swap new: XImpl
{noformat}

I can imagine why swap is not called, because for ServiceRequiringX Aspect1 
does not get really 'swapped' But is there any way to find out this is 
happening?



> Swap callback not called when there are multiple aspects on a service and one 
> of the aspects with lower rank is removed
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-5453
>                 URL: https://issues.apache.org/jira/browse/FELIX-5453
>             Project: Felix
>          Issue Type: Bug
>          Components: Dependency Manager
>    Affects Versions: org.apache.felix.dependencymanager-r8
>            Reporter: Jeroen Daanen
>         Attachments: Activator.java
>
>
> If you have multiple aspects on a service with interface X and one of the 
> aspects with a lower rank is removed, the service requiring service X does 
> not get the swap callback.
> See the attached Activator with example code.
> The swap method is not called when 'aspect1' is removed.
> Actual output of running the activator:
> {noformat}
> Add: XImpl
> Swap old: XImpl
> Swap new: Aspect1
> Swap old: Aspect1
> Swap new: Aspect2
> Swap old: Aspect2
> Swap new: XImpl
> {noformat}
> I can imagine why swap is not called, because for ServiceRequiringX Aspect1 
> does not get really 'swapped' (the service stays Aspect2) But is there any 
> way to find out this is happening?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to