Commit aa76328ae23ce1d8f6295d463ca68565299d0351
1 parent
01616222
test: Alternativer EntityManagerProducer im CDI-Kontext
Showing
4 changed files
with
28 additions
and
3 deletions
src/main/java/net/ziemers/swxercise/db/dao/EntityManagerProducer.java
0 → 100644
| 1 | +package net.ziemers.swxercise.db.dao; | |
| 2 | + | |
| 3 | +import javax.enterprise.inject.Produces; | |
| 4 | +import javax.persistence.EntityManager; | |
| 5 | +import javax.persistence.PersistenceContext; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Der Producer stellt einen Entity Manager zur Verfügung, sofern die Anwendung im JEE-Container | |
| 9 | + * des WildFly Servers läuft. Läuft sie im Testkontext in ihrem Weld-Server, funktioniert dies | |
| 10 | + * naturgegeben nicht, und es wird der alternative Producer verwendet, der sich in der Klasse | |
| 11 | + * "JpaTestUtils" im Paket "test.java.net.ziemers.swxercise.db.utils befindet". | |
| 12 | + */ | |
| 13 | +public class EntityManagerProducer { | |
| 14 | + | |
| 15 | + @Produces | |
| 16 | + @PersistenceContext | |
| 17 | + private EntityManager entityManager; | |
| 18 | + | |
| 19 | +} | ... | ... |
src/main/java/net/ziemers/swxercise/db/dao/GenericDao.java
| ... | ... | @@ -3,8 +3,8 @@ package net.ziemers.swxercise.db.dao; |
| 3 | 3 | import java.util.Collection; |
| 4 | 4 | |
| 5 | 5 | import javax.ejb.Stateless; |
| 6 | +import javax.inject.Inject; | |
| 6 | 7 | import javax.persistence.EntityManager; |
| 7 | -import javax.persistence.PersistenceContext; | |
| 8 | 8 | import javax.persistence.TypedQuery; |
| 9 | 9 | import javax.persistence.criteria.CriteriaBuilder; |
| 10 | 10 | import javax.persistence.criteria.CriteriaQuery; |
| ... | ... | @@ -19,7 +19,11 @@ import net.ziemers.swxercise.db.BaseEntity; |
| 19 | 19 | @Stateless |
| 20 | 20 | public class GenericDao { |
| 21 | 21 | |
| 22 | - @PersistenceContext | |
| 22 | + /* | |
| 23 | + * Der Entity Manager wird per CDI injiziert, damit er auch im Testkontext mit dem CDI-Runner funktioniert. | |
| 24 | + * Im JEE-Container "zieht" dann die Produktion des Entity Managers in der Klasse "EntityMangerProducer". | |
| 25 | + */ | |
| 26 | + @Inject | |
| 23 | 27 | protected EntityManager entityManager; |
| 24 | 28 | |
| 25 | 29 | /** | ... | ... |
src/test/java/net/ziemers/swxercise/db/utils/JpaTestUtils.java
| ... | ... | @@ -27,6 +27,7 @@ import org.dbunit.ext.mysql.MySqlDataTypeFactory; |
| 27 | 27 | import org.dbunit.ext.mysql.MySqlMetadataHandler; |
| 28 | 28 | import org.dbunit.operation.DatabaseOperation; |
| 29 | 29 | import org.hibernate.internal.SessionImpl; |
| 30 | +import org.jglue.cdiunit.ProducesAlternative; | |
| 30 | 31 | import org.slf4j.Logger; |
| 31 | 32 | import org.slf4j.LoggerFactory; |
| 32 | 33 | |
| ... | ... | @@ -54,6 +55,7 @@ public class JpaTestUtils { |
| 54 | 55 | * @return EntityManager der erzeugt wurde |
| 55 | 56 | */ |
| 56 | 57 | @Produces |
| 58 | + @ProducesAlternative | |
| 57 | 59 | public EntityManager getEm() { |
| 58 | 60 | if (emf == null) { |
| 59 | 61 | synchronized (EntityManagerFactory.class) { | ... | ... |
src/test/java/net/ziemers/swxercise/lg/user/service/UserServiceTest.java