diff options
author | Dmitri Dolguikh <dmitri@appliedlogic.ca> | 2009-12-02 10:30:18 -0400 |
---|---|---|
committer | Dmitri Dolguikh <dmitri@appliedlogic.ca> | 2009-12-02 10:30:18 -0400 |
commit | 2f515dec53ebbf3d50c638723889c08170bef9d7 (patch) | |
tree | 8d52cb0c2caf5168c77fb3422ed51cac4f097c5c | |
parent | c363dfb884beb99b7fd84b26ac4499936b4024dd (diff) | |
download | candlepin-2f515dec53ebbf3d50c638723889c08170bef9d7.tar.gz candlepin-2f515dec53ebbf3d50c638723889c08170bef9d7.tar.xz candlepin-2f515dec53ebbf3d50c638723889c08170bef9d7.zip |
first stab at persisting of Consumer object in a real db
-rw-r--r-- | proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java | 40 | ||||
-rw-r--r-- | proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java | 17 | ||||
-rw-r--r-- | proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java | 9 | ||||
-rw-r--r-- | proxy/code/src/org/fedoraproject/candlepin/model/ObjectFactory.java | 2 | ||||
-rw-r--r-- | proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java | 46 | ||||
-rw-r--r-- | proxy/conf/eclipse/all tests.launch (renamed from proxy/conf/eclipse/candlepin-proxy.launch) | 8 |
6 files changed, 103 insertions, 19 deletions
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java b/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java new file mode 100644 index 0000000..87c58f4 --- /dev/null +++ b/proxy/code/src/org/fedoraproject/candlepin/model/AbstractHibernateRepository.java @@ -0,0 +1,40 @@ +package org.fedoraproject.candlepin.model; + +import java.io.Serializable; +import java.lang.reflect.ParameterizedType; + +import org.hibernate.Session; + +public abstract class AbstractHibernateRepository<E> { + + protected final Session session; + private final Class<E> entityType; + + @SuppressWarnings("unchecked") + protected AbstractHibernateRepository(Session session) { + this.session = session; + entityType = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + } + + public E find(Serializable id) { + return get(entityType, id); + } + + public E create(E entity) { + save(entity); + flush(); + return entity; + } + + protected final <T> T get(Class<T> clazz, Serializable id) { + return clazz.cast(session.get(clazz, id)); + } + + protected final void save(Object anObject) { + session.save(anObject); + } + + protected final void flush() { + session.flush(); + } +} diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java new file mode 100644 index 0000000..b613ff8 --- /dev/null +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java @@ -0,0 +1,17 @@ +package org.fedoraproject.candlepin.model; + +import org.hibernate.Session; +import org.hibernate.criterion.Restrictions; + +public class ConsumerRepository extends AbstractHibernateRepository<Consumer> { + + public ConsumerRepository(Session session) { + super(session); + } + + public Consumer lookupByName(String name) { + return (Consumer) session.createCriteria(Consumer.class) + .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 new file mode 100644 index 0000000..9c56e2d --- /dev/null +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java @@ -0,0 +1,9 @@ +package org.fedoraproject.candlepin.model; + +import org.hibernate.Session; + +public class ConsumerTypeRepository extends AbstractHibernateRepository<ConsumerType> { + public ConsumerTypeRepository(Session session) { + super(session); + } +} diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ObjectFactory.java b/proxy/code/src/org/fedoraproject/candlepin/model/ObjectFactory.java index 51249e4..7f86256 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ObjectFactory.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ObjectFactory.java @@ -129,7 +129,7 @@ public class ObjectFactory { } return null; } - + /** * Store an object * @param u object to store 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 bb9b6ee..1137ef2 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java @@ -14,27 +14,39 @@ */ package org.fedoraproject.candlepin.resource.test; +import static org.junit.Assert.*; + import org.fedoraproject.candlepin.model.Consumer; import org.fedoraproject.candlepin.model.ConsumerInfo; +import org.fedoraproject.candlepin.model.ConsumerRepository; import org.fedoraproject.candlepin.model.ConsumerType; -import org.fedoraproject.candlepin.model.ObjectFactory; +import org.fedoraproject.candlepin.model.ConsumerTypeRepository; import org.fedoraproject.candlepin.resource.ConsumerResource; -import org.fedoraproject.candlepin.test.TestUtil; - -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.config.ClientConfig; -import com.sun.jersey.api.client.config.DefaultClientConfig; - +import org.fedoraproject.candlepin.test.DatabaseTestFixture; +import org.hibernate.Session; +import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.*; /** * ConsumerResourceTest * @version $Rev$ */ -public class ConsumerResourceTest { +public class ConsumerResourceTest extends DatabaseTestFixture { + + private ConsumerRepository consumerRepository; + private ConsumerTypeRepository consumerTypeRepository; + private ConsumerType standardSystemType; + @Before + public void setUp() { + super.setUp(); + consumerTypeRepository = new ConsumerTypeRepository((Session) em.getDelegate()); + consumerRepository = new ConsumerRepository((Session) em.getDelegate()); + + standardSystemType = new ConsumerType("standard-system"); + consumerTypeRepository.create(standardSystemType); + } + @Test public void testCreateConsumer() throws Exception { String newname = "test-consumer-" + System.currentTimeMillis(); @@ -42,10 +54,16 @@ public class ConsumerResourceTest { ConsumerResource capi = new ConsumerResource(); ConsumerInfo ci = new ConsumerInfo(); ci.setMetadataField("name", newname); - ConsumerType type = new ConsumerType("standard-system"); - capi.create(ci, type); - assertNotNull(ObjectFactory.get().lookupByFieldName(Consumer.class, - "name", newname)); + + Consumer c = new Consumer(); + c.setName(ci.getMetadataField("name")); + c.setType(standardSystemType); + c.setInfo(ci); + + Consumer saved = consumerRepository.create(c); + + assertEquals(saved, consumerRepository.find(saved.getId())); + //capi.create(ci, type); } // @Test diff --git a/proxy/conf/eclipse/candlepin-proxy.launch b/proxy/conf/eclipse/all tests.launch index bf66bc7..2683552 100644 --- a/proxy/conf/eclipse/candlepin-proxy.launch +++ b/proxy/conf/eclipse/all tests.launch @@ -1,17 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration type="org.eclipse.jdt.junit.launchconfig"> -<stringAttribute key="bad_container_name" value="/candlepin-proxy/conf/eclipse/r"/> +<stringAttribute key="bad_container_name" value="/candlepin-proxy/conf/eclipse/a"/> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> -<listEntry value="/candlepin-proxy"/> +<listEntry value="/candlepin-proxy/code/src"/> </listAttribute> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> -<listEntry value="4"/> +<listEntry value="2"/> </listAttribute> <listAttribute key="org.eclipse.debug.ui.favoriteGroups"> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> <listEntry value="org.eclipse.debug.ui.launchGroup.run"/> </listAttribute> -<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=candlepin-proxy"/> +<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=candlepin-proxy/code\/src"/> <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> |