Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] Advice weaver semantics issues?

Hi

I've been trying to follow aspectj's weaver semantics
for a 
couple of days now. By and large, aspectj's weaver
**does seem ** to be
failthful to the characterization given in Mitch Wand,
Gregor Kiczales 
and Dutchyn's paper. In this mail, I shall be
referring to this paper 
as the 'WGD' (paper). I see some issues in the way
advice execution
model works. Here's my share of thoughts on one
important issue:

Assume that we have defined a mix of around and after
advice for a
single join point - a method call c.m(), where 'c' is
a class name and 'm'
a method of 'c'. The order of definition of advices
(in an aspect) is 
af1, af2, ar, af3, af4, where an 'af' stands for after
advice and 
'ar' for around advice. Assume that the (around
advice) 'ar' * does not * 
do a 'proceed'.

Using aspectj we find that the advice af1 and af2 *do
not* get executed, 
while af3 and af4 do get their chance to run. By WGD
paper, the ordering
could be diiferent; so exactly the other two after
advices get executed.
My contention is not about the actual ordering, but
about the reasons why
any of these after advice be executed in this example.
The around advice
in our example ** has not ** proceeded to the
underlying join point.
So, in my opinion, none of the after advice must be
allowed to execute.
Because, for instance, there might be some sort of
dependencies amongst 
the advice and the actual join point under
consideration.

Are there any specific reasons why this model was
adopted during the
language design? Am I oblivious (euphemism for
ignorance!) of some
important "principles" here? I suppose Kiczales or Jim
would throw some light on
this particular issue.

Thank you in advance for your time


__________________________________
Do you Yahoo!?
Get better spam protection with Yahoo! Mail.
http://antispam.yahoo.com/tools


Back to the top