#740 - ClassCastException: java.util.ArrayList cannot be cast to com.avaje.ebean.bean.BeanCollection at com.avaje.ebeaninternal.server.deploy.BeanPropertyAssocMany.resetMany(BeanPropertyAssocMany.java:273)

This commit is contained in:
Robin Bygrave
2016-06-17 12:30:57 +12:00
parent d88ff2a3b2
commit dfa6353850
8 changed files with 202 additions and 58 deletions
@@ -1,8 +1,13 @@
package com.avaje.ebean;
import com.avaje.tests.model.basic.EBasic;
import com.avaje.tests.model.basic.Order;
import com.avaje.tests.model.basic.OrderDetail;
import com.avaje.tests.model.basic.ResetBasicData;
import org.junit.Test;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
public class EbeanServer_refresh {
@@ -27,4 +32,41 @@ public class EbeanServer_refresh {
server.refresh(basic);
assertEquals(basic.getStatus(), EBasic.Status.ACTIVE);
}
@Test
public void refresh_when_oneToManyLoaded() {
ResetBasicData.reset();
Order order = Ebean.find(Order.class, 1);
order.getCustomer().getName();
order.getDetails().size();
Ebean.refresh(order);
}
@Test
public void refresh_when_oneToManyVanilla() {
ResetBasicData.reset();
Order order = Ebean.find(Order.class, 1);
order.getCustomer().getName();
order.setDetails(new ArrayList<OrderDetail>());
Ebean.refresh(order);
}
@Test
public void refresh_when_oneToManyNull() {
ResetBasicData.reset();
Order order = Ebean.find(Order.class, 1);
order.getCustomer().getName();
order.setDetails(null);
Ebean.refresh(order);
}
}
@@ -0,0 +1,81 @@
package com.avaje.ebeaninternal.server.deploy;
import org.junit.Test;
import javax.persistence.CascadeType;
import static org.junit.Assert.*;
public class BeanCascadeInfoTest {
@Test
public void setTypes_ALL() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setTypes(new CascadeType[]{CascadeType.ALL});
assertTrue(info.isSave());
assertTrue(info.isDelete());
assertTrue(info.isRefresh());
}
@Test
public void setTypes_PERSIST() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setTypes(new CascadeType[]{CascadeType.PERSIST});
assertTrue(info.isSave());
assertFalse(info.isDelete());
assertFalse(info.isRefresh());
}
@Test
public void setTypes_MERGE() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setTypes(new CascadeType[]{CascadeType.MERGE});
assertTrue(info.isSave());
assertFalse(info.isDelete());
assertFalse(info.isRefresh());
}
@Test
public void setTypes_REMOVE() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setTypes(new CascadeType[]{CascadeType.REMOVE});
assertFalse(info.isSave());
assertTrue(info.isDelete());
assertFalse(info.isRefresh());
}
@Test
public void setTypes_REFRESH() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setTypes(new CascadeType[]{CascadeType.REFRESH});
assertFalse(info.isSave());
assertFalse(info.isDelete());
assertTrue(info.isRefresh());
}
@Test
public void setDelete() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setDelete(true);
assertFalse(info.isSave());
assertTrue(info.isDelete());
assertFalse(info.isRefresh());
}
@Test
public void setSaveDelete() throws Exception {
BeanCascadeInfo info = new BeanCascadeInfo();
info.setSaveDelete(true, true);
assertTrue(info.isSave());
assertTrue(info.isDelete());
assertFalse(info.isRefresh());
}
}