summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Dolguikh <dmitri@appliedlogic.ca>2009-12-02 10:30:18 -0400
committerDmitri Dolguikh <dmitri@appliedlogic.ca>2009-12-02 10:30:18 -0400
commit2f515dec53ebbf3d50c638723889c08170bef9d7 (patch)
tree8d52cb0c2caf5168c77fb3422ed51cac4f097c5c
parentc363dfb884beb99b7fd84b26ac4499936b4024dd (diff)
downloadcandlepin-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.java40
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ConsumerRepository.java17
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ConsumerTypeRepository.java9
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ObjectFactory.java2
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java46
-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"/>