From: <id...@us...> - 2009-03-10 11:30:08
|
Revision: 73 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=73&view=rev Author: idueppe Date: 2009-03-10 11:29:58 +0000 (Tue, 10 Mar 2009) Log Message: ----------- refactored unit tests and extracted AbstractPersistentUnitTest to test-utilities. Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/pom.xml Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java Removed Paths: ------------- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java Copied: cse-ip/trunk/sandbox/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java (from rev 68, cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java 2009-03-10 11:29:58 UTC (rev 73) @@ -0,0 +1,84 @@ +package de.campussource.cse.common.test; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; +import javax.persistence.Persistence; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; + + +public abstract class AbstractPersistentUnitTest { + + protected static EntityManagerFactory entityManagerFactory; + protected EntityManager entityManager; + private AnnotationInjector injector; + + @BeforeClass + public static void retrieveEntityManagerFactory() { + entityManagerFactory = Persistence.createEntityManagerFactory("cseip"); + } + + @Before + public void retrieveEntityManager() { + entityManager = entityManagerFactory.createEntityManager(); + } + + /** + * Checks whether a active transaction exists. If so it will rollback this transaction. + */ + @After + public void closeEntity() { + EntityTransaction tx = entityManager.getTransaction(); + if (tx.isActive()) { + tx.rollback(); + } + entityManager.close(); + } + + @AfterClass + public static void closeFactory() { + entityManagerFactory.close(); + } + + + protected void autowireByType(Object object) { + lazyInjectorInitialization(); + injector.autowire(object); + } + + /** + * Checks whether or not the Injector is already initialized or not. + */ + private void lazyInjectorInitialization() { + if (injector == null) { + injector = new AnnotationInjector().defaultPersistentUnit(entityManager); + } + } + + /** + * Start new transaction in current session + */ + protected void txBegin() { + entityManager.getTransaction().begin(); + } + + /** + * Commit current transaction in current session + */ + protected void txCommit() { + entityManager.getTransaction().commit(); + } + + /** + * Commit and begin new transaction in current session + */ + protected void commitAndBeginTx() { + txCommit(); + txBegin(); + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/pom.xml =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/pom.xml 2009-03-10 11:24:27 UTC (rev 72) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/pom.xml 2009-03-10 11:29:58 UTC (rev 73) @@ -16,6 +16,11 @@ <dependencies> <dependency> + <groupId>de.campussource.cse</groupId> + <artifactId>test-utilities</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> <groupId>javax.ejb</groupId> <artifactId>ejb-api</artifactId> <version>3.0</version> Deleted: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java 2009-03-10 11:24:27 UTC (rev 72) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java 2009-03-10 11:29:58 UTC (rev 73) @@ -1,114 +0,0 @@ -package de.campussource.cse.idmapper; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.ejb.EJB; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import javax.persistence.PersistenceContext; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; - -public abstract class AbstractPersistentUnitTest { - - protected static EntityManagerFactory entityManagerFactory; - protected EntityManager entityManager; - - @BeforeClass - public static void retrieveEntityManagerFactory() { - entityManagerFactory = Persistence.createEntityManagerFactory("cseip"); - } - - @Before - public void retrieveEntityManager() { - entityManager = entityManagerFactory.createEntityManager(); - } - - @After - public void closeEntity() { - entityManager.close(); - } - - @AfterClass - public static void closeFactory() { - entityManagerFactory.close(); - } - - // FIXME Extract to Util class - private void injectField(Object object, Field field, Object reference) { - boolean accessible = field.isAccessible(); - field.setAccessible(true); - try { - field.set(object, reference); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - field.setAccessible(accessible); - } - - // FIXME Extract to Util class - private Map<String, Object> context = new HashMap<String, Object>(); - - // FIXME Extract to Util class - protected void autowireByType(Object object) { - Field[] fields = retrieveAllDeclaredFieldsIncludedInheritance(object); - for (Field field : fields) { - if (field.isAnnotationPresent(PersistenceContext.class)) { - injectField(object, field, entityManager); - } - if (field.isAnnotationPresent(EJB.class)) { - try { - Class fieldClass = field.getType(); - Object target = context.get(fieldClass.getName()); - if (target == null) { - target = fieldClass.newInstance(); - autowireByType(target); - context.put(fieldClass.getName(), target); - } - injectField(object, field, target); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - } - - // FIXME Extract to Util class - private Field[] retrieveAllDeclaredFieldsIncludedInheritance(Object object) { - List<Field> fields = new ArrayList<Field>(); - Class clazz = object.getClass(); - while (clazz != null) { - fields.addAll(Arrays.asList(clazz.getDeclaredFields())); - clazz = clazz.getSuperclass(); - } - - return (Field[]) fields.toArray(new Field[fields.size()]); - } - - protected void txBegin() { - entityManager.getTransaction().begin(); - } - - protected void txCommit() { - entityManager.getTransaction().commit(); - } - - protected void commitAndBeginTx() { - txCommit(); - txBegin(); - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |