From 1ea49dd206a444d3286e296c183ca4b2939c2339 Mon Sep 17 00:00:00 2001
From: Rob Bygrave
Date: Thu, 15 May 2014 00:07:25 +1200
Subject: [PATCH] Test for #110 - BeanSet of sub type with inheritance has null
listen mode
---
.../inheritance/TestDuplcateKeyException.java | 6 +-
.../tests/inheritance/TestInheritInsert.java | 132 +++++++++---------
.../inheritance/TestInheritanceOnMany.java | 47 +++++++
.../tests/inheritance/TestIntInherit.java | 2 +
.../tests/inheritance/TestSkippable.java | 2 +
.../com/avaje/tests/model/basic/Animal.java | 13 ++
.../tests/model/basic/AnimalShelter.java | 60 ++++++++
.../java/com/avaje/tests/model/basic/Cat.java | 4 +-
8 files changed, 197 insertions(+), 69 deletions(-)
create mode 100644 src/test/java/com/avaje/tests/inheritance/TestInheritanceOnMany.java
create mode 100644 src/test/java/com/avaje/tests/model/basic/AnimalShelter.java
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;
}