[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] intercept Class but not SubClass
|
Ron,
First, thanks for the tip yesterday, very slick. Every day that I learn
more AspectJ
I marvel at how code can be written so elegantly.
Second, I have a question about the difference between call and
execution. I want to
be using call because I want my aspect to intercept into the calling
class, not the
class that is getting executed. That said, does call return the
instantiated object?
I tried running:
public aspect MyAspect
{
pointcut myIntercept() : call( MyClass.new() ) &&
!within( MyAspect ) &&
!this( MySubClass.new() );
after() : myIntercept()
{
MyClass mc = (MyClass)thisJoinPoint.getTarget();
}
}
But when I "getTarget()" the object is null. Is this because only the
call has been
made and the object hasn't actually been created yet. That is what I am
lead to believe.
I used execution but after reading the FAQ entry I see that my intercept
is going into
MyClass and not the class that is calling MyClass.
Should I be using "initialization" instead? I want the aspect placed in
the calling class
but I need to use the instance of the object that I am making a call
to. Does this make
sense? I think I am confusing myself.
Thanks again.
Charlie
Ron Bodkin said the following on 6/9/2004 7:45 PM:
See also the a FAQ entry on the differences between call and execution join points to determine which is the right one to use in a given scenario: http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/doc/faq.html#q:comparecallandexecution
------------Original Message------------
From: Wes Isberg <wes@xxxxxxxxxxxxxx>
To: aspectj-users@xxxxxxxxxxx
Date: Wed, Jun-9-2004 4:10 PM
Subject: Re: [aspectj-users] intercept Class but not SubClass
To add to what's said,
call(MyClass.new())
will pick out a constructor-call join point
but not the corresponding constructor-execution join point,
which as Ron points out runs when subclasses are being
initialized.
(As for what the pointcuts mean, I encourage you{/me/everyone}
to closely read the programming guide semantics appendix.
30-90 minutes spent really absorbing those definitions will
pay off a lot in avoiding common mistakes.)
Wes
Charles N. Harvey III wrote:
Hello.
I have written a simple aspect to run after MyClass.new is executed.
Thing is, I also have MySubClass which extends MyClass. And the aspect
seems to be intercepting that as well.
public pointcut myCutting() : execution( MyClass.new() ) && !execution(
MySubClass.new() );
That doesn't seem to be doing it. Is that correct or is there some other
way to make sure that no sub-classes get intercepted?
Thanks a lot.
Charlie
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users