summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Dolguikh <ddolguik@redhat.com>2009-12-04 14:32:45 -0400
committerDmitri Dolguikh <ddolguik@redhat.com>2009-12-04 14:32:45 -0400
commit94501c3b433a3e2ef9cfe5e6da49f930204a0c08 (patch)
treed903d73c090c68333887215ad7c2f8c92d5867fb
parentb4c989272f444850e8f819b2b7a77a21cc9afad7 (diff)
downloadcandlepin-94501c3b433a3e2ef9cfe5e6da49f930204a0c08.tar.gz
candlepin-94501c3b433a3e2ef9cfe5e6da49f930204a0c08.tar.xz
candlepin-94501c3b433a3e2ef9cfe5e6da49f930204a0c08.zip
added guice ioc and support for transactions via warp-persist
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java32
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java13
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java8
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java20
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);
}