summaryrefslogtreecommitdiffstats
path: root/tests/new/MultiDispatchCp.java
diff options
context:
space:
mode:
authorwisberg <wisberg>2002-12-16 18:51:06 +0000
committerwisberg <wisberg>2002-12-16 18:51:06 +0000
commit144143c2970a1e874d74cdbd0f8c622d4282a3c3 (patch)
treeb12383d3d9e76c7e1f25f7fbec83051ef17f81fb /tests/new/MultiDispatchCp.java
parentfafae443719b26159ab2d7dac1c9b46b5e00b671 (diff)
downloadaspectj-144143c2970a1e874d74cdbd0f8c622d4282a3c3.tar.gz
aspectj-144143c2970a1e874d74cdbd0f8c622d4282a3c3.zip
initial version
Diffstat (limited to 'tests/new/MultiDispatchCp.java')
-rw-r--r--tests/new/MultiDispatchCp.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/new/MultiDispatchCp.java b/tests/new/MultiDispatchCp.java
new file mode 100644
index 000000000..b500ed4a7
--- /dev/null
+++ b/tests/new/MultiDispatchCp.java
@@ -0,0 +1,77 @@
+import org.aspectj.testing.Tester;
+
+public class MultiDispatchCp {
+ 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.checkEventsFromFile("MultiDispatchCp.out");
+ //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();
+ }
+}
+
+abstract aspect Multi {
+ abstract pointcut m();
+
+ abstract String getPrefix();
+
+ String around(String s): m() && args(s) {
+ return getPrefix() + "-string-" + s;
+ }
+ String around(Integer i): m() && args(i) {
+ //System.out.println(thisJoinPoint + " would return " + proceed(i));
+ return getPrefix() + "-integer-" + i;
+ }
+ String around(Double d): m() && args(d) {
+ return getPrefix() + "-double-" + d;
+ }
+}
+
+aspect MultiCall extends Multi {
+ public static boolean enabled = false;
+
+ String getPrefix() { return "call"; }
+
+ pointcut m(): call(String C.doit(Object)) && if(enabled);
+}
+
+
+// dominates should have no effect as call join points
+// always come before executions
+aspect MultiExec extends Multi dominates MultiCall {
+ public static boolean enabled = false;
+
+ String getPrefix() { return "exec"; }
+
+ pointcut m(): execution(String C.doit(Object)) && if(enabled);
+}