org.aspectj/tests/new/MultiDispatchCf.java
2002-12-16 18:51:06 +00:00

75 lines
1.8 KiB
Java

import org.aspectj.testing.Tester;
public class MultiDispatchCf {
public static void main(String[] args) {
C c = new C();
Tester.event("**** exec ****");
//MultiExec.enabled = true;
run(new C());
Tester.event("**** call ****");
//MultiExec.enabled = false;
//MultiCall.enabled = true;
run(new C());
Tester.event("**** both=call ****");
//MultiExec.enabled = true;
run(new C());
Tester.printEvents();
}
static void run(C c) {
Tester.event(c.doit("s1"));
Tester.event(c.doit(new Integer(10)));
Tester.event(c.doit(new Double(1.25)));
Object o;
o = "s2"; Tester.event(c.doit(o));
o = new Integer(20); Tester.event(c.doit(o));
o = new Double(2.25); Tester.event(c.doit(o));
}
}
class C {
String doit(Object o) {
return "did-" + o.toString();
}
}
aspect MultiCall {
pointcut t1(String s): call(String C.doit(Object)) && args(s);
String around(String s): t1(s) { return proceed(s); }
String around(Object o): t1(o) { return proceed(o); }
pointcut m(Object o): call(String C.doit(Object)) && args(o);
String getPrefix() { return "call"; }
String around(String s): m(s) { //ERR
return getPrefix() + "-string-" + s;
}
String around(Integer i): m(i) { //ERR
return getPrefix() + "-integer-" + i;
}
String around(Double d): m(d) { //ERR
return getPrefix() + "-double-" + d;
}
}
aspect MultiCreate {
pointcut make(Object o): this(o) && execution(new(..));
private interface I {}
declare parents: C implements I;
before(I i): make(i) { //ERR: doesn't match Object
System.out.println("new I: " + i);
}
}