summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevan Goodwin <dgoodwin@redhat.com>2009-12-03 16:20:59 -0400
committerDevan Goodwin <dgoodwin@redhat.com>2009-12-03 16:22:09 -0400
commit6e0285b30d87bbab036f6ecd8d050593b7c07ce3 (patch)
tree15997fa704170e6c931f4b37a360d4f1c10cdc72
parent3a30375aabcfc58a2ca83381caec4079f2249c7e (diff)
downloadcandlepin-6e0285b30d87bbab036f6ecd8d050593b7c07ce3.tar.gz
candlepin-6e0285b30d87bbab036f6ecd8d050593b7c07ce3.tar.xz
candlepin-6e0285b30d87bbab036f6ecd8d050593b7c07ce3.zip
Make owner -> user bi-directional relationship.
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java2
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/Owner.java4
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/User.java2
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java24
-rw-r--r--proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java6
5 files changed, 34 insertions, 4 deletions
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
index 1e20d3e..6bc0019 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java
@@ -66,7 +66,7 @@ public class Consumer {
@ManyToOne
@ForeignKey(name="fk_consumer_owner")
- @JoinColumn(nullable=false, name="owner_id", referencedColumnName="id")
+ @JoinColumn(nullable=false)
private Owner owner;
// Consumer hierarchy it meant to be useful to represent the relationship between
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java
index 61f0787..6367817 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java
@@ -51,8 +51,6 @@ public class Owner {
@Column(nullable=false)
private String name;
- // TODO: Remove these transients once the appropriate objects are mapped:
-
@OneToMany(mappedBy="owner", targetEntity=Consumer.class)
private Set<Consumer> consumers;
@@ -61,7 +59,7 @@ public class Owner {
@ForeignKey(name="fk_user_owner_id")
private Set<EntitlementPool> entitlementPools;
- @Transient
+ @OneToMany(mappedBy="owner", targetEntity=User.class)
private Set<User> users;
/**
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/User.java b/proxy/code/src/org/fedoraproject/candlepin/model/User.java
index 7594e9d..dd67521 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/User.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/User.java
@@ -19,6 +19,7 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
@@ -44,6 +45,7 @@ public class User {
@ManyToOne
@ForeignKey(name="fk_user_owner_id")
+ @JoinColumn(nullable=false)
private Owner owner;
private String login;
diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java
index c42af0a..83e6299 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java
@@ -115,4 +115,28 @@ public class OwnerTest extends DatabaseTestFixture {
Owner lookedUp = (Owner)em.find(Owner.class, o.getId());
assertEquals(2, lookedUp.getConsumers().size());
}
+
+ @Test
+ public void bidirectionalUsers() throws Exception {
+ beginTransaction();
+ Owner o = TestUtil.createOwner();
+
+ User u1 = TestUtil.createUser(o);
+ User u2 = TestUtil.createUser(o);
+
+ o.addUser(u1);
+ o.addUser(u2);
+ em.persist(o);
+ em.persist(u1);
+ em.persist(u2);
+
+ commitTransaction();
+
+ assertEquals(2, o.getUsers().size());
+
+ em.clear();
+ Owner lookedUp = (Owner)em.find(Owner.class, o.getId());
+ assertEquals(2, lookedUp.getUsers().size());
+ }
+
}
diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java
index a000d43..a7b21c0 100644
--- a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java
+++ b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java
@@ -26,6 +26,7 @@ import org.fedoraproject.candlepin.model.EntitlementPool;
import org.fedoraproject.candlepin.model.ObjectFactory;
import org.fedoraproject.candlepin.model.Owner;
import org.fedoraproject.candlepin.model.Product;
+import org.fedoraproject.candlepin.model.User;
/**
* TestUtil for creating various testing objects.
@@ -87,6 +88,11 @@ public class TestUtil {
return e;
}
+ public static User createUser(Owner owner) {
+ User u = new User(owner, "testuser" + randomInt(), "sekret");
+ return u;
+ }
+
public static Date createDate(int year, int month, int day) {
Calendar cal = Calendar.getInstance();