Supports loading of corrupt beans

This commit is contained in:
Roland Praml
2019-01-03 11:43:50 +01:00
parent 0b299edf0d
commit 4d93b70bf9
26 changed files with 221 additions and 24 deletions
@@ -2,6 +2,10 @@ package org.tests.json;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.annotation.ForPlatform;
import io.ebean.annotation.Platform;
import io.ebean.text.TextException;
import org.tests.model.json.EBasicJsonList;
import org.tests.model.json.PlainBean;
import org.ebeantest.LoggedSqlCollector;
@@ -10,6 +14,7 @@ import org.junit.Test;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
@@ -165,4 +170,33 @@ public class TestDbJson_List extends BaseTestCase {
String asJson = Ebean.json().toJson(found);
assertNotNull(asJson);
}
@ForPlatform(Platform.H2)
@Test
public void find_corrupt_json() {
EBasicJsonList bean = new EBasicJsonList();
PlainBean plainBean = new PlainBean();
plainBean.setName("Blubb");
bean.getBeanMap().put("bla", plainBean );
Ebean.save(bean);
Ebean.update(EBasicJsonList.class)
.set("beanMap", "blabla")
.where().eq("id", bean.getId())
.update();
bean = Ebean.find(EBasicJsonList.class, bean.getId());
Map<String, Exception> errors = server().getBeanState(bean).getLoadErrors();
assertThat(errors).containsKey("beanMap").hasSize(1);
assertThat(errors.values().iterator().next())
.isInstanceOf(TextException.class)
.hasMessageContaining("blabla");
//assertThat(bean.getBeanMap().get("bla").getName()).isEqualTo("Blubb");
}
}