diff options
author | Devan Goodwin <dgoodwin@redhat.com> | 2009-11-26 15:30:01 -0400 |
---|---|---|
committer | Devan Goodwin <dgoodwin@redhat.com> | 2009-11-26 15:34:01 -0400 |
commit | 1e090a546e381d92ac85d1fcd257b6f73b8f8ff9 (patch) | |
tree | 25b47b3c91a40e73cba6ef58fccdca38417d7f27 | |
parent | befa9401ccde73c219c0dcb837f34f712aa9891d (diff) | |
download | candlepin-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.
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() { |