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,8 +3,8 @@ package net.ziemers.swxercise.db.dao; | ||
| 3 | import java.util.Collection; | 3 | import java.util.Collection; |
| 4 | 4 | ||
| 5 | import javax.ejb.Stateless; | 5 | import javax.ejb.Stateless; |
| 6 | +import javax.inject.Inject; | ||
| 6 | import javax.persistence.EntityManager; | 7 | import javax.persistence.EntityManager; |
| 7 | -import javax.persistence.PersistenceContext; | ||
| 8 | import javax.persistence.TypedQuery; | 8 | import javax.persistence.TypedQuery; |
| 9 | import javax.persistence.criteria.CriteriaBuilder; | 9 | import javax.persistence.criteria.CriteriaBuilder; |
| 10 | import javax.persistence.criteria.CriteriaQuery; | 10 | import javax.persistence.criteria.CriteriaQuery; |
| @@ -19,7 +19,11 @@ import net.ziemers.swxercise.db.BaseEntity; | @@ -19,7 +19,11 @@ import net.ziemers.swxercise.db.BaseEntity; | ||
| 19 | @Stateless | 19 | @Stateless |
| 20 | public class GenericDao { | 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 | protected EntityManager entityManager; | 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,6 +27,7 @@ import org.dbunit.ext.mysql.MySqlDataTypeFactory; | ||
| 27 | import org.dbunit.ext.mysql.MySqlMetadataHandler; | 27 | import org.dbunit.ext.mysql.MySqlMetadataHandler; |
| 28 | import org.dbunit.operation.DatabaseOperation; | 28 | import org.dbunit.operation.DatabaseOperation; |
| 29 | import org.hibernate.internal.SessionImpl; | 29 | import org.hibernate.internal.SessionImpl; |
| 30 | +import org.jglue.cdiunit.ProducesAlternative; | ||
| 30 | import org.slf4j.Logger; | 31 | import org.slf4j.Logger; |
| 31 | import org.slf4j.LoggerFactory; | 32 | import org.slf4j.LoggerFactory; |
| 32 | 33 | ||
| @@ -54,6 +55,7 @@ public class JpaTestUtils { | @@ -54,6 +55,7 @@ public class JpaTestUtils { | ||
| 54 | * @return EntityManager der erzeugt wurde | 55 | * @return EntityManager der erzeugt wurde |
| 55 | */ | 56 | */ |
| 56 | @Produces | 57 | @Produces |
| 58 | + @ProducesAlternative | ||
| 57 | public EntityManager getEm() { | 59 | public EntityManager getEm() { |
| 58 | if (emf == null) { | 60 | if (emf == null) { |
| 59 | synchronized (EntityManagerFactory.class) { | 61 | synchronized (EntityManagerFactory.class) { |
src/test/java/net/ziemers/swxercise/lg/user/service/UserServiceTest.java
| @@ -46,7 +46,7 @@ public class UserServiceTest extends JpaTestUtils { | @@ -46,7 +46,7 @@ public class UserServiceTest extends JpaTestUtils { | ||
| 46 | .withUsername("tziemer") | 46 | .withUsername("tziemer") |
| 47 | .withPassword("secret"); | 47 | .withPassword("secret"); |
| 48 | 48 | ||
| 49 | - //underTest.createUser(dto); | 49 | + underTest.createUser(dto); |
| 50 | 50 | ||
| 51 | txCommit(); | 51 | txCommit(); |
| 52 | } | 52 | } |