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

metatech commented on ARIES-1407:
---------------------------------

Hi Grzegorz,

I debugged into the class ServiceRecipe and here is the timeline of the called 
methods (in pseudo/abbreviated code) :

1.      
{code}
static { // static initialization
        initialServiceRegistration = true;
}       
{code}

2.      
{code}
private void createService() {  
        assert(initialServiceRegistration=true);
        // Stack trace A
    ...
        // When the service is first requested, we need to create listeners and 
call them
        if (!initialServiceRegistration && listeners == null) {
                // Never executed
        }
}
{code}

3.      
{code}
public void register() {
    ...
        initialServiceRegistration = false;
        // Patch : add call to listener 
        // Stack trace B
}
{code}

                
Stack trace A
{code}
        at 
org.apache.aries.blueprint.container.ServiceRecipe.invokeListeners(ServiceRecipe.java:345)
        at 
org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:315)
        at 
org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:252)
        at 
org.apache.aries.blueprint.container.ServiceRecipe.internalCreate(ServiceRecipe.java:148)
        at 
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at 
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
        at 
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
        at 
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:688)
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:383)
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
{code}
        
Stack trace B
{code}
        at 
com.mycompany.blueprint.ExitGracePeriodNotifier.register(ExitGracePeriodNotifier.java:41)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at 
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:297)
        at 
org.apache.aries.blueprint.utils.ServiceListener.invokeMethod(ServiceListener.java:97)
        at 
org.apache.aries.blueprint.utils.ServiceListener.register(ServiceListener.java:59)
        at 
org.apache.aries.blueprint.container.ServiceRecipe.invokeListeners(ServiceRecipe.java:336)
        at 
org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:198)
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:710)
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:385)
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
{code}


> Service (un)registration listener not called anymore
> ----------------------------------------------------
>
>                 Key: ARIES-1407
>                 URL: https://issues.apache.org/jira/browse/ARIES-1407
>             Project: Aries
>          Issue Type: Bug
>          Components: Blueprint
>         Environment: Servicemix 5.4.1
>            Reporter: metatech
>         Attachments: blueprint_registration_listener_fix_v2.patch
>
>
> Service (un)registration listeners are not called anymore since Blueprint 
> 1.4.0.
> There are 2 booleans in the "ServiceRecipe" class which are tested against 
> the wrong values.
> Please find a patch which makes them work again with Blueprint 1.4.3.



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

Reply via email to