From 3bf8d319fd34e77f0efbec08ccfd8de1e08eca62 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Mon, 23 May 2011 02:39:41 +0200 Subject: [PATCH] fixed test with null Persistence-Manager and wrapped RuntimeExceptions --- .../com/example/support/DomaenenAspekt.aj | 7 +++++-- .../example/support/PersistenceManager.java | 21 ++++++++++++------- .../java/com/example/domain/KontoTest.java | 2 +- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/aspectj/src/main/java/com/example/support/DomaenenAspekt.aj b/aspectj/src/main/java/com/example/support/DomaenenAspekt.aj index dce189c..0e4577d 100644 --- a/aspectj/src/main/java/com/example/support/DomaenenAspekt.aj +++ b/aspectj/src/main/java/com/example/support/DomaenenAspekt.aj @@ -7,7 +7,7 @@ import org.aspectj.lang.reflect.MethodSignature; public privileged aspect DomaenenAspekt { - private PersistenceManager pm; + private PersistenceManager pm = new PersistenceManager(); public interface DomaenenObjekt {} pointcut domainObject() : within(com.example.domain.*); @@ -29,9 +29,12 @@ public privileged aspect DomaenenAspekt { Object result=proceed(); pm.commit(); return result; + } catch(RuntimeException e) { + pm.rollback(); + throw e; } catch(Exception e) { pm.rollback(); - throw new RuntimeException("Fehler beim transaktionalem AusfŸhren",e); + throw new RuntimeException(e); } } diff --git a/aspectj/src/main/java/com/example/support/PersistenceManager.java b/aspectj/src/main/java/com/example/support/PersistenceManager.java index 1d2b419..24868ce 100644 --- a/aspectj/src/main/java/com/example/support/PersistenceManager.java +++ b/aspectj/src/main/java/com/example/support/PersistenceManager.java @@ -1,11 +1,18 @@ package com.example.support; -public interface PersistenceManager { - void begin(); - void commit(); - void rollback(); +public class PersistenceManager { + void begin() {} + void commit() {} + void rollback() {} - T persist(T entity); - void delete(Object entity); - T load(Class type, long id); + T persist(T entity) { return entity; } + void delete(Object entity) {} + + T load(Class type, long id) { + try { + return type.newInstance(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/aspectj/src/test/java/com/example/domain/KontoTest.java b/aspectj/src/test/java/com/example/domain/KontoTest.java index 2ee7f52..21e07e0 100644 --- a/aspectj/src/test/java/com/example/domain/KontoTest.java +++ b/aspectj/src/test/java/com/example/domain/KontoTest.java @@ -25,7 +25,7 @@ public void kontoShouldNotAllowNegativeValue() { @Test(expected = IllegalStateException.class) public void kontoShouldNotAllowValueToBecomeNegative() { - new Konto(1,"test").buche(-2); + new Konto(11,"test").buche(-20); } @Test(expected = IllegalStateException.class)