/* * Created on 05.01.2005 * * $Id$ */ package casino; import java.io.*; /** * @author oliver * @since 05.01.2005 * @version $revision$ */ public aspect PersistenceAspect { //declare soft : IOException : within(KontoTest); declare soft : IOException : call(public void Konto.load()) || call(public void Konto.store()); /* * Erweiterung der Konto-Klasse */ public void Konto.store() throws IOException { Writer writer = new FileWriter(getFile()); PrintWriter printWriter = new PrintWriter(writer); printWriter.println(this.kontostand); writer.close(); } public void Konto.load() throws IOException { Reader reader = new FileReader(getFile()); BufferedReader bufReader = new BufferedReader(reader); this.kontostand = Integer.parseInt(bufReader.readLine()); reader.close(); } public File Konto.getFile() { return new File("data", getInhaber()); } /** * Dieser Aspect wurde jetzt von KontoAspect hierher "refactored", da * er eher zum PersistenceAsepct passt. * Bei jeder Kontostand-Aenderung wird das Konto automatisch abgespeichert. */ after(Konto kto) : set(protected int Konto.kontostand) && this(kto) { try { kto.store(); } catch (IOException e) { System.err.println("kann Konto " + kto + " nicht abspeichern"); } } }