1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import java.awt.*;
- import java.awt.event.*;
- import org.aspectj.testing.Tester;
-
- /*
- * I would like to listen to events fired by a whiteboard swing widget.
- * When I listen to method invocations from the widget itself in
- * an aspect,
- * there
- * is no problem (like say getPreferredSize()).
- *
- * But, when I want to listen to events fired by a mouse adapter
- * from which
- * I derived
- * an inner class in the whiteboard like this :
- *
- * SOLUTION: Replace all super.inner to super$inner.
- */
-
- public class InnerClassNaming {
- public static void main(String[] args) {
- new InnerClassNaming();
- }
-
- InnerClassNaming() {
- MouseListener listener = new MyListener();
- addMouseListener(listener);
- }
-
- void addMouseListener(MouseListener listener) {}
-
- class MyListener extends MouseAdapter {
- public void mousePressed(MouseEvent e) {
- System.out.println("mousPressed: " + e);
- }
- }
- }
-
- aspect MyAspect /*of eachobject(instanceof(InnerClassNaming.MyListener))*/ {
-
- pointcut pressed(InnerClassNaming.MyListener ls):
- //instanceof(ls) && executions(* mousePressed(..));
- this(InnerClassNaming.MyListener) &&
- target(ls) &&
- execution(* mousePressed(..));
-
- before(InnerClassNaming.MyListener ls): pressed(ls) {
- System.out.println(thisJoinPoint);
- }
- }
|