Hi Andy,
I am having an issue in understanding why one of the method call is intercepted 
and why the other is not. In the first case, for pointcut definition, all 
method calls to hasNext is intercepted which also intercepts "hasNext" method 
whose object is of type "org.apache.fop.fo.FONode$FONodeIterator"
The  hierarchy is:-
public interface FONodeIterator extends ListIterator{}

Now the aspect code is as follows:-
pointcut HasNext_hasnext(Iterator i) : (call(* Iterator.hasNext()) && 
target(i));








                after (Iterator i) : HasNext_hasnext(i) {//advice code}
Similarly, consider following as the second case, pointcut intercepting "put" 
method, but it does not intercept "put" method whose object is of type 
ConcurrentMap 
Code is :- 
pointcut UnsafeMapIterator_updateMap(Map map) : (call(* Map.put*(..))  && 
target(map));
                after (Map map) : UnsafeMapIterator_updateMap(map) {
//advice code
}
If I use subtype pattern e.g. call(* Map+.put*(..), then ConcurrentMap.put 
method-call will also be intercepted. This just confuses me even more, because 
if subtype pattern is used to intercept all methods in class or subtype of 
it,then I don't understand why in the first case 
"org.apache.fop.fo.FONode$FONodeIterator.hasNext" is intercepted. I have also 
used -showWeaveInfo to confirm the behaviour.
Regards,
Omar

                                          
_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to