diff --git a/src/test/java/com/avaje/tests/inheritance/TestDuplcateKeyException.java b/src/test/java/com/avaje/tests/inheritance/TestDuplcateKeyException.java index 4e88425d9..73be048ee 100644 --- a/src/test/java/com/avaje/tests/inheritance/TestDuplcateKeyException.java +++ b/src/test/java/com/avaje/tests/inheritance/TestDuplcateKeyException.java @@ -2,6 +2,7 @@ package com.avaje.tests.inheritance; import org.junit.Assert; +import org.junit.Test; import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; @@ -18,8 +19,9 @@ public class TestDuplcateKeyException extends BaseTestCase { * it was considered safe to skip as it didn't take into account any derived classes * into account with e.g. collections and Cascade options

*/ - public void testQuery() - { + @Test + public void testQuery() { + // Setup the data first final ListAttributeValue value1 = new ListAttributeValue(); diff --git a/src/test/java/com/avaje/tests/inheritance/TestInheritInsert.java b/src/test/java/com/avaje/tests/inheritance/TestInheritInsert.java index d856b30a6..4802a04fe 100644 --- a/src/test/java/com/avaje/tests/inheritance/TestInheritInsert.java +++ b/src/test/java/com/avaje/tests/inheritance/TestInheritInsert.java @@ -3,6 +3,7 @@ package com.avaje.tests.inheritance; import java.util.List; import org.junit.Assert; +import org.junit.Test; import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; @@ -13,75 +14,76 @@ import com.avaje.tests.model.basic.Vehicle; import com.avaje.tests.model.basic.VehicleDriver; public class TestInheritInsert extends BaseTestCase { - - public void testCasting() { - - Truck t = new Truck(); - t.setCapacity(10d); - Ebean.save(t); - - Vehicle v = Ebean.find(Vehicle.class, t.getId()); - if (v instanceof Truck){ - Truck t0 = (Truck)v; - Assert.assertEquals(Double.valueOf(10d), t0.getCapacity()); - Assert.assertEquals(Double.valueOf(10d), ((Truck)v).getCapacity()); - Assert.assertNotNull(t0.getId()); - } else { - Assert.assertTrue("v not a Truck?", false); - } - - VehicleDriver driver = new VehicleDriver(); - driver.setName("Jim"); - driver.setVehicle(v); - - Ebean.save(driver); - - VehicleDriver d1 = Ebean.find(VehicleDriver.class, driver.getId()); - v = d1.getVehicle(); - if (v instanceof Truck){ - Double capacity = ((Truck)v).getCapacity(); - Assert.assertEquals(Double.valueOf(10d), capacity); - Assert.assertNotNull(v.getId()); - } else { - Assert.assertTrue("v not a Truck?", false); - } - - List list = Ebean.find(VehicleDriver.class).findList(); - for (VehicleDriver vehicleDriver : list) { - if (vehicleDriver.getVehicle() instanceof Truck){ - Double capacity = ((Truck)vehicleDriver.getVehicle()).getCapacity(); - Assert.assertEquals(Double.valueOf(10d), capacity); - } - } - } - public void testQuery() { - - Car car = new Car(); - car.setLicenseNumber("MARIOS_CAR_LICENSE"); - Ebean.save(car); - + @Test + public void testCasting() { - VehicleDriver driver = new VehicleDriver(); - driver.setName("Mario"); - driver.setVehicle(car); - Ebean.save(driver); + Truck t = new Truck(); + t.setCapacity(10d); + Ebean.save(t); - Query query = Ebean.find(VehicleDriver.class); - query.where().eq("vehicle.licenseNumber", "MARIOS_CAR_LICENSE"); - List drivers = query.findList(); - - Assert.assertNotNull(drivers); - Assert.assertEquals(1, drivers.size()); - Assert.assertNotNull(drivers.get(0)); + Vehicle v = Ebean.find(Vehicle.class, t.getId()); + if (v instanceof Truck) { + Truck t0 = (Truck) v; + Assert.assertEquals(Double.valueOf(10d), t0.getCapacity()); + Assert.assertEquals(Double.valueOf(10d), ((Truck) v).getCapacity()); + Assert.assertNotNull(t0.getId()); + } else { + Assert.assertTrue("v not a Truck?", false); + } - Assert.assertEquals("Mario", drivers.get(0).getName()); - Assert.assertEquals("MARIOS_CAR_LICENSE", drivers.get(0).getVehicle().getLicenseNumber()); + VehicleDriver driver = new VehicleDriver(); + driver.setName("Jim"); + driver.setVehicle(v); - Vehicle car2 = Ebean.find(Vehicle.class, car.getId()); - - car2.setLicenseNumber("test"); - Ebean.save(car); + Ebean.save(driver); - } + VehicleDriver d1 = Ebean.find(VehicleDriver.class, driver.getId()); + v = d1.getVehicle(); + if (v instanceof Truck) { + Double capacity = ((Truck) v).getCapacity(); + Assert.assertEquals(Double.valueOf(10d), capacity); + Assert.assertNotNull(v.getId()); + } else { + Assert.assertTrue("v not a Truck?", false); + } + + List list = Ebean.find(VehicleDriver.class).findList(); + for (VehicleDriver vehicleDriver : list) { + if (vehicleDriver.getVehicle() instanceof Truck) { + Double capacity = ((Truck) vehicleDriver.getVehicle()).getCapacity(); + Assert.assertEquals(Double.valueOf(10d), capacity); + } + } + } + + @Test + public void testQuery() { + + Car car = new Car(); + car.setLicenseNumber("MARIOS_CAR_LICENSE"); + Ebean.save(car); + + VehicleDriver driver = new VehicleDriver(); + driver.setName("Mario"); + driver.setVehicle(car); + Ebean.save(driver); + + Query query = Ebean.find(VehicleDriver.class); + query.where().eq("vehicle.licenseNumber", "MARIOS_CAR_LICENSE"); + List drivers = query.findList(); + + Assert.assertNotNull(drivers); + Assert.assertEquals(1, drivers.size()); + Assert.assertNotNull(drivers.get(0)); + + Assert.assertEquals("Mario", drivers.get(0).getName()); + Assert.assertEquals("MARIOS_CAR_LICENSE", drivers.get(0).getVehicle().getLicenseNumber()); + + Vehicle car2 = Ebean.find(Vehicle.class, car.getId()); + + car2.setLicenseNumber("test"); + Ebean.save(car); + + } } diff --git a/src/test/java/com/avaje/tests/inheritance/TestInheritanceOnMany.java b/src/test/java/com/avaje/tests/inheritance/TestInheritanceOnMany.java new file mode 100644 index 000000000..b0500ec55 --- /dev/null +++ b/src/test/java/com/avaje/tests/inheritance/TestInheritanceOnMany.java @@ -0,0 +1,47 @@ +package com.avaje.tests.inheritance; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.ebean.Ebean; +import com.avaje.ebean.bean.BeanCollection.ModifyListenMode; +import com.avaje.ebean.common.BeanList; +import com.avaje.tests.model.basic.Animal; +import com.avaje.tests.model.basic.AnimalShelter; +import com.avaje.tests.model.basic.Cat; +import com.avaje.tests.model.basic.Dog; + +public class TestInheritanceOnMany extends BaseTestCase { + + @Test + public void test() { + + Cat cat = new Cat(); + cat.setName("Puss"); + Ebean.save(cat); + + Dog dog = new Dog(); + dog.setRegistrationNumber("DOGGIE"); + Ebean.save(dog); + + AnimalShelter shelter = new AnimalShelter(); + shelter.setName("My Animal Shelter"); + shelter.getAnimals().add(cat); + shelter.getAnimals().add(dog); + + Ebean.save(shelter); + + AnimalShelter shelter2 = Ebean.find(AnimalShelter.class, shelter.getId()); + List animals = shelter2.getAnimals(); + + BeanList beanList = (BeanList)animals; + ModifyListenMode modifyListenMode = beanList.getModifyListenMode(); + + Assert.assertNotNull(modifyListenMode); + + } + +} diff --git a/src/test/java/com/avaje/tests/inheritance/TestIntInherit.java b/src/test/java/com/avaje/tests/inheritance/TestIntInherit.java index 192d16243..db786e8a1 100644 --- a/src/test/java/com/avaje/tests/inheritance/TestIntInherit.java +++ b/src/test/java/com/avaje/tests/inheritance/TestIntInherit.java @@ -2,6 +2,7 @@ package com.avaje.tests.inheritance; import org.junit.Assert; +import org.junit.Test; import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; @@ -10,6 +11,7 @@ import com.avaje.tests.model.basic.TIntRoot; public class TestIntInherit extends BaseTestCase { + @Test public void testMe() { TIntRoot r = new TIntRoot(); diff --git a/src/test/java/com/avaje/tests/inheritance/TestSkippable.java b/src/test/java/com/avaje/tests/inheritance/TestSkippable.java index a3a9cbdb8..1c75dcaa8 100644 --- a/src/test/java/com/avaje/tests/inheritance/TestSkippable.java +++ b/src/test/java/com/avaje/tests/inheritance/TestSkippable.java @@ -1,6 +1,7 @@ package com.avaje.tests.inheritance; import org.junit.Assert; +import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +21,7 @@ public class TestSkippable extends BaseTestCase { * it was considered safe to skip as it didn't take into account any derived classes * into account with e.g. collections and Cascade options

*/ + @Test public void testQuery() { // Setup the data first diff --git a/src/test/java/com/avaje/tests/model/basic/Animal.java b/src/test/java/com/avaje/tests/model/basic/Animal.java index d92a6a982..10bec8617 100644 --- a/src/test/java/com/avaje/tests/model/basic/Animal.java +++ b/src/test/java/com/avaje/tests/model/basic/Animal.java @@ -5,6 +5,7 @@ import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; +import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Version; @@ -20,6 +21,9 @@ public abstract class Animal { @Version Long version; + @ManyToOne + AnimalShelter shelter; + public Long getId() { return id; } @@ -35,4 +39,13 @@ public abstract class Animal { public void setVersion(Long version) { this.version = version; } + + public AnimalShelter getShelter() { + return shelter; + } + + public void setShelter(AnimalShelter shelter) { + this.shelter = shelter; + } + } diff --git a/src/test/java/com/avaje/tests/model/basic/AnimalShelter.java b/src/test/java/com/avaje/tests/model/basic/AnimalShelter.java new file mode 100644 index 000000000..a12da340a --- /dev/null +++ b/src/test/java/com/avaje/tests/model/basic/AnimalShelter.java @@ -0,0 +1,60 @@ +package com.avaje.tests.model.basic; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Version; + +import com.avaje.ebean.annotation.PrivateOwned; + +@Entity +public class AnimalShelter { + + @Id + Long id; + + @Version + Long version; + + String name; + + @OneToMany(cascade=CascadeType.PERSIST, mappedBy="shelter") + @PrivateOwned + List animals; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getAnimals() { + return animals; + } + + public void setAnimals(List animals) { + this.animals = animals; + } + +} diff --git a/src/test/java/com/avaje/tests/model/basic/Cat.java b/src/test/java/com/avaje/tests/model/basic/Cat.java index 8f74c7319..38a5c1bee 100644 --- a/src/test/java/com/avaje/tests/model/basic/Cat.java +++ b/src/test/java/com/avaje/tests/model/basic/Cat.java @@ -6,9 +6,9 @@ import javax.persistence.Entity; @Entity @DiscriminatorValue("CAT") public class Cat extends Animal { - + String name; - + public String getName() { return name; }