Pointcuts

Lösungen zu Kapitel 4

  1. siehe Pointcuts "executeMethods()" und "callConstructors()" in src/casino/LogAspect.aj, die dort zum Pointcut "logPoints()" zusammengefasst werden.
  2. siehe before()-Anweisung in src/casino/LogAspect.aj
  3. siehe load()- und store()-Methode in src/casino/Konto.java - hier wird der Konto-Inhaber als Dateiname zum Abspeichern und Einlesen verwendet. Das klappt natürlich nur, wenn der Namen eindeutig ist. In der Praxis führt man hierfür eine Kontonummer ein, aber für unser Beispiel soll das reichen.
  4. siehe Pointcut "handleExceptions()" und die anschließende before()-Anweisung in src/casino/LogAspect.aj
  5. siehe src/casino/LogAspect.aj:
    before() : call(public * *..*(..)) &&
    (withincode(public void Konto.store())
    || withincode(public void Konto.load())) {
    log.debug("store/load: " + thisJoinPoint.toShortString());
    }
  6. siehe src/casino/LogAspect.aj:
  7. after(int x) : set(private int Konto.kontostand) && args(x) {
    log.info("Kontostand aendert sich zu " + x);
    }
  8. siehe src/casino/Roulette.java und test/casino/RouletteTest.java

letzte Änderung: 17. Jan. 2005