--------------------------------------------------------    
----------------------------------- 
                            | Bundle A                                        
|    | Bundle D                   |
                            |                                                   
   
|    |                                  |
                            |      AbstractBaseClassToBeWoven   |    |  
MyWeavingHook      |
                            |                         ^  (woven once)      
|    | (weaves into classes  |
                            |                         |                         
   
|    |  in Bundle A )             |
                            |                         |                         
   
|    -----------------------------------    
                            |       AbstractClassToBeWoven         |        
                            |                 ^           ^ (woven twice)  |
                           
-------------------|-----------|------------------------
                                             /              \
                                           /                   \      
                                        /                         \
                                     /                               \
                                  /                                     \
                               /                                           \
   --------------------------|-------------------        
------------------|--------------------------------                     
   | Bundle B           |                   |        |                 |        
        
Bundle C |
   |                         |                   |        |                
|                                |
   | FirstSubClassOfWovenClass |        | SecondSubClassOfWovenClass |
   |                                             |        |                     
                            
|
   ----------------------------------------------        
--------------------------------------------------- 

Hi, I am trying to implement a weaving hook. I am able to successfully weave
into the class AbstractBaseClassToBeWoven but when I try to weave into the
sub class AbstractClassToBeWoven the overidden method weave(WovenClass
wovenClass) in MyWeavingHook is usually* invoked twice by two different
Blueprint Extender threads causing issues e.g. when trying to add a new
method it complains about the method already being present.

If however I weave into the super class AbstractBaseClassToBeWoven, the
overidden method weave(WovenClass wovenClass) in MyWeavingHook is only
invoked once.

Is this the expected behaviour? If so, what is the best way of weaving into
the AbstractClassToBeWoven class ie. weaving into a class where multiple
classes in different bundles extend that same class?


Note -

1) if I do not install Bundle C then method weave(WovenClass wovenClass) is
only invoked once
2) *occassionally when weaving into AbstractClassToBeWoven the method
weave(WovenClass wovenClass) is only invoked once

I have set up a two Felix/Karaf Pax Exam test cases, one blueprint, and one
Spring DM and both have the same behaviour.


Thanks,

Tim



--
View this message in context: 
http://apache-felix.18485.x6.nabble.com/Weaving-hook-called-multiple-times-is-this-the-expected-behavior-tp5009331.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to