[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] candidate feature req: Perthis and Pertarget deactivation

Hi,

I was wondering whether pertarget and perthis aspects could benefit from a deactivatedAt pointcut? Percflow aspects have a well-defined point at which they are eligible for garbage collection. This is nice because there's a well-defined lifespan during which the aspect can advise join points. As it stands, there's no way for a developer to turn off, say, a pertarget aspect based on runtime information (short of using if() pointcuts).

I'm envisioning something like:

public aspect PerTest pertarget(activate()) deactivatedAt(deactivate()){

pointcut activate() : call(public void Thing.activate(..)) && target(Thing);

pointcut deactivate() : call(public void Thing.deactivate(..)) && target(Thing);

void around(Thing thing) : execution(public void Thing.work(..)) && this(thing){
System.out.println("->Only affects activated things " +thing);
proceed(thing);
System.out.println("<-Only affects activated things " +thing);

}
}


Of course, the name deactivatedAt probably needs some work.

I don't have a specific usecase in mind, it just seems that for consistency I ought to be able to control the deactivation of perinstance aspects the same way I can control activation.

Does anyone else think that this feature is warranted/useful? Does anyone use perthis and target aspects enough to warrant fiddling with them?

Cheers,


Nicholas Lesiecki Software Craftsman, specializing in J2EE, Agile Methods, and aspect-oriented programming m: 520 591-1849

Books:
* Mastering AspectJ: http://tinyurl.com/66vf
* Java Tools for Extreme Programming: http://tinyurl.com/66vt

Articles on AspectJ:
* http://tinyurl.com/66vu and http://tinyurl.com/66vv