summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevan Goodwin <dgoodwin@redhat.com>2009-11-26 15:30:01 -0400
committerDevan Goodwin <dgoodwin@redhat.com>2009-11-26 15:34:01 -0400
commit1e090a546e381d92ac85d1fcd257b6f73b8f8ff9 (patch)
tree25b47b3c91a40e73cba6ef58fccdca38417d7f27
parentbefa9401ccde73c219c0dcb837f34f712aa9891d (diff)
downloadcandlepin-1e090a546e381d92ac85d1fcd257b6f73b8f8ff9.tar.gz
candlepin-1e090a546e381d92ac85d1fcd257b6f73b8f8ff9.tar.xz
candlepin-1e090a546e381d92ac85d1fcd257b6f73b8f8ff9.zip
Move ConsumerType from ConsumerInfo to Consumer itself.
Having this object on the info rather than the consumer itself started looking incorrect. Type is likely required, info is not and by default may be empty. Feels very much like something that should be defined on the consumer itself.
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java28
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java16
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java8
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java2
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTypeTest.java2
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/resource/ConsumerResource.java12
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java4
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/resource/test/EntitlementResourceTest.java11
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java9
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java10
10 files changed, 46 insertions, 56 deletions
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
index 3e642fd..6b3384b 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
@@ -18,7 +18,6 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
-import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@@ -54,6 +53,9 @@ public class Consumer {
private String name;
@ManyToOne
+ private ConsumerType type;
+
+ @ManyToOne
private Owner owner;
// TODO: Is this worth mapping? Do we need a hierarchy amidst consumers?
@@ -69,9 +71,10 @@ public class Consumer {
@Transient // TODO
private ConsumerInfo info;
- public Consumer(String name, Owner owner) {
+ public Consumer(String name, Owner owner, ConsumerType type) {
this.name = name;
this.owner = owner;
+ this.type = type;
this.info = new ConsumerInfo();
this.info.setParent(this); // TODO: ???
@@ -111,28 +114,19 @@ public class Consumer {
}
/**
- * @return the type
+ * @return Returns the type.
*/
public ConsumerType getType() {
- if (this.info == null) {
- return null;
- }
- else {
- return info.getType();
- }
+ return type;
}
-
+
/**
- * Set the type of this Consumer.
- * @param typeIn to set
+ * @param typeIn The type to set.
*/
public void setType(ConsumerType typeIn) {
- if (this.info == null) {
- this.info = new ConsumerInfo();
- }
- this.info.setType(typeIn);
+ type = typeIn;
}
-
+
/**
* @return the parent
*/
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java
index 5488041..2394bd4 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java
@@ -34,7 +34,6 @@ import javax.xml.bind.annotation.XmlTransient;
public class ConsumerInfo {
private Consumer parent;
- private ConsumerType type;
private Map<String, String> metadata;
/**
@@ -53,21 +52,6 @@ public class ConsumerInfo {
}
/**
- * @return Returns the type.
- */
- public ConsumerType getType() {
- return type;
- }
-
- /**
- * @param typeIn The type to set.
- */
- public void setType(ConsumerType typeIn) {
- type = typeIn;
- }
-
-
- /**
* @return Returns the metadata.
*/
public Map<String, String> getMetadata() {
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java
index a8f18fe..ddb5976 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java
@@ -14,8 +14,6 @@
*/
package org.fedoraproject.candlepin.model;
-import java.io.Serializable;
-
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@@ -32,13 +30,11 @@ import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.PROPERTY)
@Entity
@Table(name="cp_consumer_type")
-public class ConsumerType implements Serializable {
+public class ConsumerType {
+ @Id
private String label;
- /**
- * default noarg ctor
- */
public ConsumerType() {
label = null;
}
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java
index 90c0428..bdc0912 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java
@@ -33,11 +33,13 @@ public class ConsumerTest extends DatabaseTestFixture {
@Before
public void setUpTestObjects() {
em.getTransaction().begin();
+
String ownerName = "Example Corporation";
owner = new Owner(ownerName);
rhel = new Product("label", "Red Hat Enterprise Linux");
em.persist(owner);
em.persist(rhel);
+
em.getTransaction().commit();
}
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTypeTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTypeTest.java
index 5ab52e0..96261ba 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTypeTest.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTypeTest.java
@@ -29,7 +29,5 @@ public class ConsumerTypeTest {
List<EntityManager> results = em.createQuery("select ct from ConsumerType as ct")
.getResultList();
assertEquals(1, results.size());
-
-
}
}
diff --git a/proxy/code/src/org/fedoraproject/candlepin/resource/ConsumerResource.java b/proxy/code/src/org/fedoraproject/candlepin/resource/ConsumerResource.java
index cce0294..4a87b67 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/resource/ConsumerResource.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/resource/ConsumerResource.java
@@ -73,12 +73,14 @@ public class ConsumerResource extends BaseResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- public Consumer create(ConsumerInfo ci) {
- System.out.println("metadata: " + ci.getMetadata());
- System.out.println("ci: " + ci);
+ public Consumer create(ConsumerInfo ci, ConsumerType type) {
+// System.out.println("metadata: " + ci.getMetadata());
+// System.out.println("ci: " + ci);
//Owner owner = (Owner) ObjectFactory.get().lookupByUUID(Owner.class, owneruuid);
Consumer c = new Consumer();
c.setName(ci.getMetadataField("name"));
+ c.setType(type);
+ // TODO: Need owner specified here:
//c.setOwner(owner);
c.setInfo(ci);
ObjectFactory.get().store(c);
@@ -91,9 +93,10 @@ public class ConsumerResource extends BaseResource {
*/
@GET @Path("/info")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ // TODO: What consumer?
public ConsumerInfo getInfo() {
ConsumerInfo ci = new ConsumerInfo();
- ci.setType(new ConsumerType("system"));
+// ci.setType(new ConsumerType("system"));
ci.setParent(null);
// Map<String,String> m = new HashMap<String,String>();
// m.put("cpu", "i386");
@@ -101,7 +104,6 @@ public class ConsumerResource extends BaseResource {
// ci.setMetadata(m);
ci.setMetadataField("cpu", "i386");
ci.setMetadataField("hey", "foobar");
- System.out.println(ci.getMetadata());
return ci;
}
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 10a2c15..bb9b6ee 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java
@@ -42,8 +42,8 @@ public class ConsumerResourceTest {
ConsumerResource capi = new ConsumerResource();
ConsumerInfo ci = new ConsumerInfo();
ci.setMetadataField("name", newname);
- ci.setType(new ConsumerType("standard-system"));
- capi.create(ci);
+ ConsumerType type = new ConsumerType("standard-system");
+ capi.create(ci, type);
assertNotNull(ObjectFactory.get().lookupByFieldName(Consumer.class,
"name", newname));
}
diff --git a/proxy/code/src/org/fedoraproject/candlepin/resource/test/EntitlementResourceTest.java b/proxy/code/src/org/fedoraproject/candlepin/resource/test/EntitlementResourceTest.java
index 38d264a..7302a4f 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/resource/test/EntitlementResourceTest.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/resource/test/EntitlementResourceTest.java
@@ -54,10 +54,13 @@ public class EntitlementResourceTest extends DatabaseTestFixture {
em.getTransaction().begin();
Owner o = TestUtil.createOwner();
- consumer = TestUtil.createConsumer(o);
+ ConsumerType type = new ConsumerType("some-consumer-type");
+
+ consumer = TestUtil.createConsumer(type, o);
product = TestUtil.createProduct();
em.persist(o);
+ em.persist(type);
em.persist(consumer);
em.persist(product);
em.getTransaction().commit();
@@ -87,11 +90,13 @@ public class EntitlementResourceTest extends DatabaseTestFixture {
assertNotNull(cert);
assertNotNull(consumer.getConsumedProducts());
assertNotNull(consumer.getEntitlements());
+
+ ConsumerType type = new ConsumerType("some-consumer-type");
// Test max membership
boolean failed = false;
for (int i = 0; i < ep.getMaxMembers() + 10; i++) {
- Consumer ci = TestUtil.createConsumer(consumer.getOwner());
+ Consumer ci = TestUtil.createConsumer(type, consumer.getOwner());
f.add("consumer_id", ci.getId());
try {
eapi.entitle(consumer, product);
@@ -133,7 +138,7 @@ public class EntitlementResourceTest extends DatabaseTestFixture {
@Test
public void testListAvailableEntitlements() {
EntitlementResource eapi = new EntitlementResource();
- consumer.setType(new ConsumerType("standard-system"));
+// consumer.setType(new ConsumerType("standard-system"));
Form f = new Form();
f.add("consumer_id", consumer.getId());
diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java b/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java
index 33eb8f4..c4502e1 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java
@@ -6,6 +6,7 @@ import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.fedoraproject.candlepin.model.Consumer;
+import org.fedoraproject.candlepin.model.ConsumerType;
import org.fedoraproject.candlepin.model.Owner;
import org.fedoraproject.candlepin.model.Product;
import org.fedoraproject.candlepin.util.EntityManagerUtil;
@@ -59,6 +60,14 @@ public class DatabaseTestFixture {
em.remove(c);
}
+ // TODO: Is this right? Or should we pre-populate default defined types, and always
+ // reference these in the tests instead of creating them everywhere?
+ List<ConsumerType> consumerTypes = em.createQuery("from ConsumerType c").
+ getResultList();
+ for (ConsumerType c : consumerTypes) {
+ em.remove(c);
+ }
+
em.getTransaction().commit();
em.close();
}
diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java
index a1c7874..f71d36a 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java
@@ -14,15 +14,15 @@
*/
package org.fedoraproject.candlepin.test;
-import org.fedoraproject.candlepin.model.BaseModel;
import org.fedoraproject.candlepin.model.Consumer;
+import org.fedoraproject.candlepin.model.ConsumerType;
import org.fedoraproject.candlepin.model.ObjectFactory;
import org.fedoraproject.candlepin.model.Owner;
import org.fedoraproject.candlepin.model.Product;
// TODO: Do we want to keep this style of creating objects for testing?
-@Deprecated
public class TestUtil {
+
private TestUtil() {
}
@@ -33,8 +33,8 @@ public class TestUtil {
return o;
}
- public static Consumer createConsumer(Owner owner) {
- Consumer c = new Consumer("Consumer Name", owner);
+ public static Consumer createConsumer(ConsumerType type, Owner owner) {
+ Consumer c = new Consumer("Consumer Name", owner, type);
ObjectFactory.get().store(c);
return c;
}
@@ -44,7 +44,7 @@ public class TestUtil {
* @return Consumer
*/
public static Consumer createConsumer() {
- return createConsumer(createOwner());
+ return createConsumer(new ConsumerType("some-consumer-type"), createOwner());
}
public static Product createProduct() {