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

51 lines
1.2 KiB
Java

import org.aspectj.testing.*;
public class AfterThrowingNotWoven {
public static void main(String[] args) {
try {
new Server().doSomething();
} catch (FaultException fe) {
Tester.event("caught-in-main");
}
Tester.checkAllEvents();
}
static {
Tester.expectEvent("caught");
Tester.expectEvent("caught-in-main");
}
}
class Server {
public void doSomething() {
System.out.println("Doing something.");
throw new FaultException();
}
}
class DisabledException extends RuntimeException {}
class FaultException extends RuntimeException {}
aspect FaultHandler {
private boolean Server.disabled = false;
private void reportFault() {
System.out.println("Failure! Please fix it.");
}
public static void fixServer(Server s) {
s.disabled = false;
}
pointcut service(Server s): target(s) && call(public * *(..));
before(Server s): service(s) {
if (s.disabled) throw new DisabledException();
}
after(Server s) throwing (FaultException e): service(s) {
s.disabled = true;
Tester.event("caught");
}
}