[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Problem trying to research inner class method
|
Hi Jeffrey,
Thanks for your advice. It is very useful. It now works only on
exampleExtendedClass:
--> pointcut p() : target(AbstractAction) && within(exampleExtendedClass)
&& execution(* *.actionPerformed(..));
I want it to work on all classes that are extended from exampleClass,
therefore I use:
--> pointcut p() : target(AbstractAction) && within(exampleClass+) &&
execution(* *.actionPerformed(..));
It works as expected!! Thank you very much.
Greetings,
Bas
Message: 8
Date: Tue, 09 Mar 2004 10:12:22 -0500
From: Jeffrey Palm <jpalm@xxxxxxxxxxx>
To: aspectj-users@xxxxxxxxxxx
Subject: Re: [aspectj-users] Problem trying to research inner classe method
and answer on ques tion mik
Reply-To: aspectj-users@xxxxxxxxxxx
Wolvers, B. (Bas) wrote:
> Please have a look at the following code:
>
> public abstract exampleClass extends Observable {
> public Object getAction() {
> return null;
> }
> }
>
> public class exampleExtendedClass extends exampleClass {
> private Action anAction = new Action();
>
> public Object getAction() {
> return anAction;
> }
>
> private class Action extends AbstractAction {
> public Action() {
> //do things
> }
>
> public void actionPerformed(ActionEvent e) {
> //click event -> on jmenuitem for example
> }
> }
> }
>
> I want an after aspect on the actionPerformed on all inner class
> extends from AbstractAction I use the following pointcut definition:
>
> pointcut aspectBeforeActionPer() : call(*
> javax.swing.AbstractAction.actionPerformed+(..));
>
> I also tried the following
>
> pointcut aspectBeforeActionPer() : call(*
> javax.swing.AbstractAction+.actionPerformed(..));
>
> Or
>
> pointcut aspectBeforeActionPer() : call(*
> javax.swing.AbstractAction.actionPerformed+(..)) &&
> within(exampleClass+);
>
> But the after advice is not reached
>
> // after aspect
> after() : aspectBeforeActionPer() {
> System.out.println("ACTION PERFORMED");
>
> }
>
> Can anyone tell me what's wrong?
>
> greetings,
>
> Bas
>
>
> For Mik:
>
> Subject: RE: [aspectj-users] Compiler Error
> Date: Mon, 1 Mar 2004 08:26:04 -0800
> Reply-To: aspectj-users@xxxxxxxxxxx
>
> As indicated on the download page AJDE for JBuilder 1.1.1 only
> supports the JBuilder 9 distributions. AJDE 1.0.6 and 1.1b2 support
> JBuilder versions 4, 5, 6 and 7. The plan for AJDE 1.2 is to JBuilder X
only.
>
> Is it possible for you to upgrade?
> --> For the research on aspectj I now use jBuilderX (this works fine)
> --> thanks
> for your comment
>
> Are you or your organization planning on sticking with JBuilder 7 for
> the foreseeable future?
> --> I can't answer this question, jBuilder 7 SE is for now good enough.
>
> JBuilder X is a significant improvement, and I'm hoping that for the
> 1.2 release we get to focus our efforts on improving integration with
> that version alone. But it would be good to have a sense of how many
> people are stuck on older versions and will be slow to upgrade.
> --> I can understand that new releases (of aspectj) will only be
> --> available
> for the lastest jbuilder version, but new versions of jbuilder are
> often released. It would be nice if latest aspectj compiler (1.1.1) is
> compatible _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
If you can settle for an execution instead of a call this will work:
aspect A {
pointcut p() :
target(AbstractAction) &&
within(exampleExtendedClass) &&
execution(* *.actionPerformed(..));
before(): p() {
System.out.println(thisJoinPoint);
}
}
///// All the code
abstract class exampleClass extends Observable {
public Object getAction() {
return null;
}
}
aspect A {
pointcut p() :
target(AbstractAction) &&
within(exampleExtendedClass) &&
execution(* *.actionPerformed(..));
before(): p() {
System.out.println(thisJoinPoint);
}
}
abstract class AbstractAction {
public abstract void actionPerformed(ActionEvent e); } abstract class
Observable {} class ActionEvent {}
public class exampleExtendedClass extends exampleClass {
private Action anAction = new Action();
void bloo() { anAction.actionPerformed(null); }
public static void main(String[] args) {
new exampleExtendedClass().bloo();
new AnotherAction().actionPerformed(null);
}
private class Action extends AbstractAction {
public void actionPerformed(ActionEvent e) {
System.out.println("Action");
}
}
}
class AnotherAction extends AbstractAction {
public void actionPerformed(ActionEvent e) {
System.out.println("AnotherAction");
}
}
--
Jeffrey Palm --> http://www.ccs.neu.edu/home/jpalm
--__--__--
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users
End of aspectj-users Digest