[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Exposing context in a Pointcut
|
Reply inline...
Matt Morten wrote:
Hello there,
I have several questions. Firstly, I would like a pointcut to expose a
reference to the currently-executing object, so that I can call
"wait()" on that object in my advice (think along the lines of
Breakpoints). However, suppose I don't necessarily wish to use this
variable in the pointcut definition (in this(), target(), or args()),
but only in the advice itself. Is there any way of doing this, without
getting a "[error] formal unbound in pointcut
pointcut" error?
Yes. You can use an anonymous pointcut combined with your non-exposing
pointcut. Something like:
before(Object obj) : executionOfMyCertainMethods() && this(obj) {
...
obj.wait();
}
Alternatively, you can use the thisJoinPoint variable available in any
advice:
before() : executionOfMyCertainMethods() {
...
thisJoinPoint.getThis().wait();
}
I prefer the first form.
Secondly, I would like to have my aspect do something straight away
(unconditionaly) when it runs, so I chose to do this:
static {
... blah
}
However, by doing it this way, I don't have access to any context.
Thus, I am forced to create a pointcut that references the joinpoint
where my "public static void main()" runs, in order to get that class.
Am i stuck to doing it this way?
You can use staticinitialization() pointcut to select join points
corresponding to class loading (hence covering all static initialization).
My third question is this: are there / will there ever be Joinpoints
for getting / setting local variables? At the moment, I am limited to
only class fields, which is a bit of a limiting factor when I want to
"Watch" all variables in my program.
No, there isn't a way to do this.
Thanks in advance,
Matt Morten
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
===
Ramnivas Laddad,
Author, AspectJ in Action
http://ramnivas.com
M: (408)203-4621