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