1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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");
- }
- }
|