diff options
4 files changed, 50 insertions, 23 deletions
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java b/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java index 10b2a68..3e7af7b 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java @@ -2,29 +2,33 @@ package org.fedoraproject.candlepin.model; import java.io.Serializable; import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import javax.persistence.EntityManager; import org.hibernate.Session; -public abstract class AbstractHibernateRepository<E> { - - protected final EntityManager em; +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.wideplay.warp.persist.Transactional; + +public class AbstractHibernateRepository<E> { + @Inject protected Provider<EntityManager> entityManager; private final Class<E> entityType; - @SuppressWarnings("unchecked") - protected AbstractHibernateRepository(EntityManager em) { - this.em = em; - entityType = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + protected AbstractHibernateRepository(Class<E> entityType) { + //entityType = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + this.entityType = entityType; } public E find(Serializable id) { return get(entityType, id); } + @Transactional public E create(E entity) { save(entity); -// flush(); + flush(); return entity; } @@ -37,10 +41,18 @@ public abstract class AbstractHibernateRepository<E> { } protected final void flush() { - em.flush(); + entityManager.get().flush(); } protected Session currentSession() { - return (Session) em.getDelegate(); + return (Session) entityManager.get().getDelegate(); } + + protected Provider<EntityManager> getEntityManager() { + return entityManager; + } + + protected void setEntityManager(Provider<EntityManager> entityManager) { + this.entityManager = entityManager; + } } diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java index 53a62be..ab747f0 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java @@ -1,18 +1,17 @@ package org.fedoraproject.candlepin.model; -import javax.persistence.EntityManager; - import org.hibernate.criterion.Restrictions; public class ConsumerRepository extends AbstractHibernateRepository<Consumer> { - public ConsumerRepository(EntityManager em) { - super(em); + protected ConsumerRepository() { + super(Consumer.class); } - + public Consumer lookupByName(String name) { return (Consumer) currentSession().createCriteria(Consumer.class) - .add(Restrictions.like("name", name)) - .uniqueResult(); + .add(Restrictions.like("name", name)) + .uniqueResult(); } + } diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java index e797b6c..ab536b9 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java @@ -1,9 +1,11 @@ package org.fedoraproject.candlepin.model; -import javax.persistence.EntityManager; + public class ConsumerTypeRepository extends AbstractHibernateRepository<ConsumerType> { - public ConsumerTypeRepository(EntityManager em) { - super(em); + + protected ConsumerTypeRepository() { + super(ConsumerType.class); } + } diff --git a/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java b/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java index 609717a..cf4a9d1 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java @@ -26,6 +26,11 @@ import org.fedoraproject.candlepin.test.DatabaseTestFixture; import org.junit.Before; import org.junit.Test; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.wideplay.warp.persist.PersistenceService; +import com.wideplay.warp.persist.UnitOfWork; + /** * ConsumerResourceTest * @version $Rev$ @@ -39,8 +44,17 @@ public class ConsumerResourceTest extends DatabaseTestFixture { @Before public void setUp() { super.setUp(); - consumerTypeRepository = new ConsumerTypeRepository(em); - consumerRepository = new ConsumerRepository(em); + + Injector injector = Guice.createInjector( + new CandlePingTestingModule(), + PersistenceService.usingJpa() + .across(UnitOfWork.TRANSACTION) + .buildModule() + ); + + + consumerRepository = injector.getInstance(ConsumerRepository.class); + consumerTypeRepository = injector.getInstance(ConsumerTypeRepository.class); standardSystemType = new ConsumerType("standard-system"); consumerTypeRepository.create(standardSystemType); @@ -61,7 +75,7 @@ public class ConsumerResourceTest extends DatabaseTestFixture { Consumer saved = consumerRepository.create(c); - assertEquals(saved, consumerRepository.find(saved.getId())); + assertEquals(saved.getId(), consumerRepository.find(saved.getId()).getId()); //capi.create(ci, type); } |