mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#919 - io.ebean package initial
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.json.EBasicJsonList;
|
||||
import org.tests.model.json.PlainBean;
|
||||
import org.avaje.ebeantest.LoggedSqlCollector;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestDbJson_List extends BaseTestCase {
|
||||
|
||||
private EBasicJsonList bean = new EBasicJsonList();
|
||||
|
||||
private EBasicJsonList found;
|
||||
|
||||
@Test
|
||||
public void insert() {
|
||||
|
||||
bean.setName("stuff");
|
||||
|
||||
bean.getTags().add("one");
|
||||
bean.getTags().add("two");
|
||||
|
||||
bean.getFlags().add(42L);
|
||||
bean.getFlags().add(43L);
|
||||
bean.getFlags().add(44L);
|
||||
|
||||
bean.setPlainBean(new PlainBean("plain", 52));
|
||||
|
||||
List<PlainBean> beanList = new ArrayList<>();
|
||||
beanList.add(new PlainBean("one", 1));
|
||||
beanList.add(new PlainBean("two", 2));
|
||||
bean.setBeanList(beanList);
|
||||
|
||||
|
||||
Set<PlainBean> beanSet = new LinkedHashSet<>();
|
||||
beanSet.add(new PlainBean("A", 1));
|
||||
beanSet.add(new PlainBean("B", 2));
|
||||
bean.setBeanSet(beanSet);
|
||||
|
||||
bean.getBeanMap().put("key0", new PlainBean("k0", 90));
|
||||
bean.getBeanMap().put("key1", new PlainBean("k1", 91));
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
found = Ebean.find(EBasicJsonList.class, bean.getId());
|
||||
|
||||
assertThat(found.getTags()).containsExactly("one", "two");
|
||||
assertTrue(found.getFlags().contains(42L));
|
||||
assertTrue(found.getFlags().contains(43L));
|
||||
assertTrue(found.getFlags().contains(44L));
|
||||
assertThat(found.getBeanList()).hasSize(2);
|
||||
assertThat(found.getBeanSet()).hasSize(2);
|
||||
assertThat(found.getBeanMap()).hasSize(2);
|
||||
|
||||
json_parse_format();
|
||||
update_when_notDirty();
|
||||
update_when_dirty();
|
||||
update_when_dirty_flags();
|
||||
update_when_dirty_SetListMap();
|
||||
}
|
||||
|
||||
//@Test//(dependsOnMethods = "insert")
|
||||
public void json_parse_format() {
|
||||
|
||||
String asJson = Ebean.json().toJson(found);
|
||||
assertThat(asJson).contains("\"tags\":[\"one\",\"two\"]");
|
||||
assertThat(asJson).contains("\"flags\":[42,43,44]");
|
||||
assertThat(asJson).contains("\"plainBean\":{\"name\":\"plain\"");
|
||||
assertThat(asJson).contains("\"beanSet\":[");
|
||||
assertThat(asJson).contains("\"beanList\":[");
|
||||
assertThat(asJson).contains("\"beanMap\":{");
|
||||
assertThat(asJson).contains("\"id\":");
|
||||
|
||||
EBasicJsonList fromJson = Ebean.json().toBean(EBasicJsonList.class, asJson);
|
||||
assertEquals(found.getId(), fromJson.getId());
|
||||
assertEquals(found.getId(), fromJson.getId());
|
||||
assertEquals(found.getName(), fromJson.getName());
|
||||
assertThat(fromJson.getTags()).containsExactly("one", "two");
|
||||
assertTrue(fromJson.getFlags().contains(42L));
|
||||
assertTrue(fromJson.getFlags().contains(43L));
|
||||
assertTrue(fromJson.getFlags().contains(44L));
|
||||
|
||||
assertThat(fromJson.getBeanSet()).hasSize(2);
|
||||
assertThat(fromJson.getBeanList()).hasSize(2);
|
||||
assertThat(fromJson.getBeanMap()).hasSize(2);
|
||||
}
|
||||
|
||||
//@Test//(dependsOnMethods = "insert")
|
||||
public void update_when_notDirty() {
|
||||
|
||||
found.setName("mod");
|
||||
LoggedSqlCollector.start();
|
||||
Ebean.save(found);
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
|
||||
// we don't update the phone numbers (as they are not dirty)
|
||||
assertThat(sql.get(0)).contains("update ebasic_json_list set name=?, plain_bean=?, version=? where");
|
||||
}
|
||||
|
||||
public void update_when_dirty() {
|
||||
|
||||
//found.setName("modAgain");
|
||||
found.getTags().add("three");
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
Ebean.save(found);
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
|
||||
// we don't update the phone numbers (as they are not dirty)
|
||||
assertThat(sql.get(0)).contains("update ebasic_json_list set plain_bean=?, tags=?, version=? where id=? and version=?");
|
||||
}
|
||||
|
||||
public void update_when_dirty_flags() {
|
||||
|
||||
//found.setName("modAgain");
|
||||
found.getFlags().remove(42L);
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
Ebean.save(found);
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
|
||||
// we don't update the phone numbers (as they are not dirty)
|
||||
assertThat(sql.get(0)).contains("update ebasic_json_list set plain_bean=?, flags=?, version=? where id=? and version=?;");
|
||||
}
|
||||
|
||||
public void update_when_dirty_SetListMap() {
|
||||
|
||||
//found.setName("modAgain");
|
||||
found.getBeanSet().clear();
|
||||
found.getBeanList().clear();
|
||||
found.getBeanMap().remove("key0");
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
Ebean.save(found);
|
||||
List<String> sql = LoggedSqlCollector.stop();
|
||||
|
||||
// we don't update the phone numbers (as they are not dirty)
|
||||
assertThat(sql.get(0)).contains("update ebasic_json_list set bean_set=?, bean_list=?, bean_map=?, plain_bean=?, version=? where id=? and version=?");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insert_fetch_when_null() {
|
||||
|
||||
EBasicJsonList bean = new EBasicJsonList();
|
||||
bean.setName("leave some nulls");
|
||||
bean.setFlags(null);
|
||||
bean.setTags(null);
|
||||
bean.setBeanMap(null);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonList found = Ebean.find(EBasicJsonList.class, bean.getId());
|
||||
|
||||
assertNull(found.getPlainBean());
|
||||
|
||||
String asJson = Ebean.json().toJson(found);
|
||||
assertNotNull(asJson);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.text.json.EJson;
|
||||
import org.tests.model.json.EBasicJsonMap;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonMapBasic extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
//String s1 = "{\"docId\":19,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
Map<String, Object> content = EJson.parseObject(s0);
|
||||
|
||||
EBasicJsonMap bean = new EBasicJsonMap();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonMap bean1 = Ebean.find(EBasicJsonMap.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
assertEquals(bean.getContent().get("contentType"), bean1.getContent().get("contentType"));
|
||||
assertEquals(18L, bean1.getContent().get("docId"));
|
||||
|
||||
bean1.setName("just change name");
|
||||
Ebean.save(bean1);
|
||||
|
||||
// content changes detected - dirty state so included in update
|
||||
Map<String, Object> content1 = bean1.getContent();
|
||||
content1.put("additional", "newValue");
|
||||
content1.put("docId", 99L);
|
||||
bean1.setName("two");
|
||||
Ebean.save(bean1);
|
||||
|
||||
EBasicJsonMap bean2 = Ebean.find(EBasicJsonMap.class, bean.getId());
|
||||
|
||||
// name changed and docId changed
|
||||
assertEquals("two", bean2.getName());
|
||||
assertEquals(99L, bean2.getContent().get("docId"));
|
||||
assertEquals("newValue", bean2.getContent().get("additional"));
|
||||
|
||||
content1.put("additional", "modValue");
|
||||
bean1.setName("three");
|
||||
bean1.setContent(content1);
|
||||
Ebean.save(bean1);
|
||||
|
||||
EBasicJsonMap bean3 = Ebean.find(EBasicJsonMap.class, bean.getId());
|
||||
|
||||
assertEquals("three", bean3.getName());
|
||||
assertEquals(99L, bean3.getContent().get("docId"));
|
||||
assertEquals("modValue", bean3.getContent().get("additional"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.text.json.EJson;
|
||||
import org.tests.model.json.EBasicJsonMapBlob;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonMapBlob extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
Map<String, Object> content = EJson.parseObject(s0);
|
||||
|
||||
EBasicJsonMapBlob bean = new EBasicJsonMapBlob();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonMapBlob bean1 = Ebean.find(EBasicJsonMapBlob.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
assertEquals(bean.getContent().get("contentType"), bean1.getContent().get("contentType"));
|
||||
assertEquals(18L, bean1.getContent().get("docId"));
|
||||
|
||||
bean1.setName("just change name");
|
||||
Ebean.save(bean1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.text.json.EJson;
|
||||
import org.tests.model.json.EBasicJsonMapClob;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonMapClob extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
Map<String, Object> content = EJson.parseObject(s0);
|
||||
|
||||
EBasicJsonMapClob bean = new EBasicJsonMapClob();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonMapClob bean1 = Ebean.find(EBasicJsonMapClob.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
assertEquals(bean.getContent().get("contentType"), bean1.getContent().get("contentType"));
|
||||
assertEquals(18L, bean1.getContent().get("docId"));
|
||||
|
||||
bean1.setName("just change name");
|
||||
Ebean.save(bean1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.text.json.EJson;
|
||||
import org.tests.model.json.EBasicJsonMapJsonB;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonMapJsonB extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
Map<String, Object> content = EJson.parseObject(s0);
|
||||
|
||||
EBasicJsonMapJsonB bean = new EBasicJsonMapJsonB();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonMapJsonB bean1 = Ebean.find(EBasicJsonMapJsonB.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
assertEquals(bean.getContent().get("contentType"), bean1.getContent().get("contentType"));
|
||||
assertEquals(18L, bean1.getContent().get("docId"));
|
||||
|
||||
bean1.setName("just change name");
|
||||
Ebean.save(bean1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.text.json.EJson;
|
||||
import org.tests.model.json.EBasicJsonMapVarchar;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonMapVarchar extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
Map<String, Object> content = EJson.parseObject(s0);
|
||||
|
||||
EBasicJsonMapVarchar bean = new EBasicJsonMapVarchar();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonMapVarchar bean1 = Ebean.find(EBasicJsonMapVarchar.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
assertEquals(bean.getContent().get("contentType"), bean1.getContent().get("contentType"));
|
||||
assertEquals(18L, bean1.getContent().get("docId"));
|
||||
|
||||
bean1.setName("just change name");
|
||||
Ebean.save(bean1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.json.EBasicJsonNode;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestJsonNodeBasic extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
String s1 = "{\"docId\":99,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNode bean = new EBasicJsonNode();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNode bean1 = Ebean.find(EBasicJsonNode.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
|
||||
assertEquals(bean.getContent().path("contentType").asText(), bean1.getContent().path("contentType").asText());
|
||||
assertEquals(18L, bean1.getContent().get("docId").asLong());
|
||||
|
||||
bean1.setName("just change name");
|
||||
Ebean.save(bean1);
|
||||
|
||||
JsonNode content1 = objectMapper.readTree(s1);
|
||||
|
||||
bean1.setName("two");
|
||||
bean1.setContent(content1);
|
||||
Ebean.save(bean1);
|
||||
|
||||
EBasicJsonNode bean2 = Ebean.find(EBasicJsonNode.class, bean.getId());
|
||||
|
||||
// name changed and docId changed
|
||||
assertEquals("two", bean2.getName());
|
||||
assertEquals(99L, bean2.getContent().path("docId").asLong());
|
||||
|
||||
// content persisted even though it has not changed (as it's loaded)
|
||||
// we can't do dirty detection on JsonNode (like we do on Map<String,Object>)
|
||||
bean1.setName("three");
|
||||
Ebean.save(bean1);
|
||||
|
||||
EBasicJsonNode bean3 = Ebean.find(EBasicJsonNode.class, bean.getId());
|
||||
|
||||
assertEquals("three", bean3.getName());
|
||||
assertEquals(99L, bean3.getContent().path("docId").asLong());
|
||||
|
||||
// write whole bean with content as JSON
|
||||
String fullBeanJson = Ebean.json().toJson(bean3);
|
||||
|
||||
// parse JSON into whole bean with content
|
||||
EBasicJsonNode beanJsonRestored = Ebean.json().toBean(EBasicJsonNode.class, fullBeanJson);
|
||||
|
||||
assertEquals(99L, beanJsonRestored.getContent().path("docId").asLong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLazyLoading() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":19,\"contentId\":\"asd\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNode bean = new EBasicJsonNode();
|
||||
bean.setName("lazyLoadTest");
|
||||
bean.setContent(content);
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNode bean1 = Ebean.find(EBasicJsonNode.class)
|
||||
.select("name")
|
||||
.setId(bean.getId())
|
||||
.findUnique();
|
||||
|
||||
Set<String> loadedProps = Ebean.getBeanState(bean1).getLoadedProps();
|
||||
assertTrue(loadedProps.contains("name"));
|
||||
assertFalse(loadedProps.contains("content"));
|
||||
|
||||
JsonNode lazyLoadedContent = bean1.getContent();
|
||||
assertNotNull(lazyLoadedContent);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.json.EBasicJsonNodeBlob;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestJsonNodeBlob extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNodeBlob bean = new EBasicJsonNodeBlob();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNodeBlob bean1 = Ebean.find(EBasicJsonNodeBlob.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
|
||||
assertEquals(bean.getContent().path("contentType").asText(), bean1.getContent().path("contentType").asText());
|
||||
assertEquals(18L, bean1.getContent().get("docId").asLong());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLazyLoading() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":19,\"contentId\":\"asd\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNodeBlob bean = new EBasicJsonNodeBlob();
|
||||
bean.setName("lazyLoadTest");
|
||||
bean.setContent(content);
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNodeBlob bean1 = Ebean.find(EBasicJsonNodeBlob.class)
|
||||
.select("name")
|
||||
.setId(bean.getId())
|
||||
.findUnique();
|
||||
|
||||
Set<String> loadedProps = Ebean.getBeanState(bean1).getLoadedProps();
|
||||
assertTrue(loadedProps.contains("name"));
|
||||
assertFalse(loadedProps.contains("content"));
|
||||
|
||||
JsonNode lazyLoadedContent = bean1.getContent();
|
||||
assertNotNull(lazyLoadedContent);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.json.EBasicJsonNodeJsonB;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestJsonNodeJsonb extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNodeJsonB bean = new EBasicJsonNodeJsonB();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNodeJsonB bean1 = Ebean.find(EBasicJsonNodeJsonB.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
|
||||
assertEquals(bean.getContent().path("contentType").asText(), bean1.getContent().path("contentType").asText());
|
||||
assertEquals(18L, bean1.getContent().get("docId").asLong());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLazyLoading() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":19,\"contentId\":\"asd\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNodeJsonB bean = new EBasicJsonNodeJsonB();
|
||||
bean.setName("lazyLoadTest");
|
||||
bean.setContent(content);
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNodeJsonB bean1 = Ebean.find(EBasicJsonNodeJsonB.class)
|
||||
.select("name")
|
||||
.setId(bean.getId())
|
||||
.findUnique();
|
||||
|
||||
Set<String> loadedProps = Ebean.getBeanState(bean1).getLoadedProps();
|
||||
assertTrue(loadedProps.contains("name"));
|
||||
assertFalse(loadedProps.contains("content"));
|
||||
|
||||
JsonNode lazyLoadedContent = bean1.getContent();
|
||||
assertNotNull(lazyLoadedContent);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.json.EBasicJsonNodeVarchar;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestJsonNodeVarchar extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testInsertUpdateDelete() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":18,\"contentId\":\"asd\",\"active\":true,\"contentType\":\"pg-hello\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNodeVarchar bean = new EBasicJsonNodeVarchar();
|
||||
bean.setName("one");
|
||||
bean.setContent(content);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNodeVarchar bean1 = Ebean.find(EBasicJsonNodeVarchar.class, bean.getId());
|
||||
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
|
||||
assertEquals(bean.getContent().path("contentType").asText(), bean1.getContent().path("contentType").asText());
|
||||
assertEquals(18L, bean1.getContent().get("docId").asLong());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLazyLoading() throws IOException {
|
||||
|
||||
String s0 = "{\"docId\":19,\"contentId\":\"asd\",\"content\":{\"name\":\"rob\",\"age\":45}}";
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
JsonNode content = objectMapper.readTree(s0);
|
||||
|
||||
EBasicJsonNodeVarchar bean = new EBasicJsonNodeVarchar();
|
||||
bean.setName("lazyLoadTest");
|
||||
bean.setContent(content);
|
||||
Ebean.save(bean);
|
||||
|
||||
EBasicJsonNodeVarchar bean1 = Ebean.find(EBasicJsonNodeVarchar.class)
|
||||
.select("name")
|
||||
.setId(bean.getId())
|
||||
.findUnique();
|
||||
|
||||
Set<String> loadedProps = Ebean.getBeanState(bean1).getLoadedProps();
|
||||
assertTrue(loadedProps.contains("name"));
|
||||
assertFalse(loadedProps.contains("content"));
|
||||
|
||||
JsonNode lazyLoadedContent = bean1.getContent();
|
||||
assertNotNull(lazyLoadedContent);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package org.tests.json;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import org.tests.model.json.EBasicJsonUnmapped;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestUnmappedProperties extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void toJson() {
|
||||
|
||||
Map<String,Object> nested = new LinkedHashMap<>();
|
||||
nested.put("alpha", "aa");
|
||||
nested.put("beta", "bb");
|
||||
|
||||
|
||||
Map<String,Object> unmapped = new LinkedHashMap<>();
|
||||
unmapped.put("one", 42);
|
||||
unmapped.put("nested", nested);
|
||||
|
||||
EBasicJsonUnmapped bean = new EBasicJsonUnmapped();
|
||||
bean.setName("someName");
|
||||
bean.setUnmapped(unmapped);
|
||||
|
||||
|
||||
String asJson = Ebean.json().toJson(bean);
|
||||
|
||||
assertThat(asJson).contains("{\"name\":\"someName\",\"one\":42,\"nested\":{\"alpha\":\"aa\",\"beta\":\"bb\"}}");
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fromJson() {
|
||||
|
||||
String json = "{\"name\":\"someName\",\"one\":42,\"nested\":{\"alpha\":\"aa\",\"beta\":\"bb\"}}";
|
||||
|
||||
EBasicJsonUnmapped bean = Ebean.json().toBean(EBasicJsonUnmapped.class, json);
|
||||
|
||||
assertThat(bean.getName()).isEqualTo("someName");
|
||||
assertThat(bean.getUnmapped().get("one")).isEqualTo(42L);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String,Object> fromNested = (Map<String,Object>)bean.getUnmapped().get("nested");
|
||||
assertThat(fromNested).containsKeys("alpha", "beta");
|
||||
assertThat(fromNested).containsValues("aa", "bb");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package org.tests.json.include;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.config.JsonConfig;
|
||||
import io.ebean.text.json.JsonWriteOptions;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonExcludeEmptyList {
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonNull() throws Exception {
|
||||
|
||||
Order bean = new Order();
|
||||
bean.setId(99);
|
||||
bean.setStatus(null);
|
||||
bean.setOrderDate(null);
|
||||
bean.setDetails(new ArrayList<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_NULL);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99,\"details\":[]}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonEmpty() throws Exception {
|
||||
|
||||
Order bean = new Order();
|
||||
bean.setId(99);
|
||||
bean.setStatus(null);
|
||||
bean.setOrderDate(null);
|
||||
bean.setDetails(new ArrayList<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_EMPTY);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package org.tests.json.include;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.config.JsonConfig;
|
||||
import io.ebean.text.json.JsonWriteOptions;
|
||||
import org.tests.model.json.EBasicJsonMap;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonExcludeEmptyMap {
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonNull() throws Exception {
|
||||
|
||||
EBasicJsonMap bean = new EBasicJsonMap();
|
||||
bean.setId(99L);
|
||||
bean.setContent(new LinkedHashMap<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_NULL);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99,\"content\":{}}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonEmpty() throws Exception {
|
||||
|
||||
EBasicJsonMap bean = new EBasicJsonMap();
|
||||
bean.setId(99L);
|
||||
bean.setContent(new LinkedHashMap<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_EMPTY);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99,\"content\":{}}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package org.tests.json.include;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.config.JsonConfig;
|
||||
import io.ebean.text.json.JsonWriteOptions;
|
||||
import org.tests.model.basic.AttributeHolder;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonExcludeEmptySet {
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonNull() throws Exception {
|
||||
|
||||
AttributeHolder bean = new AttributeHolder();
|
||||
bean.setId(99);
|
||||
bean.setAttributes(new LinkedHashSet<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_NULL);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99,\"attributes\":[]}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonEmpty() throws Exception {
|
||||
|
||||
AttributeHolder bean = new AttributeHolder();
|
||||
bean.setId(99);
|
||||
bean.setAttributes(new LinkedHashSet<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_EMPTY);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.tests.json.include;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.config.JsonConfig;
|
||||
import io.ebean.text.json.JsonWriteOptions;
|
||||
import org.tests.json.transientproperties.EJsonTransientObject;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonExcludeNull {
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson() throws Exception {
|
||||
|
||||
|
||||
EJsonTransientObject bean = new EJsonTransientObject();
|
||||
bean.setId(99L);
|
||||
bean.setName(null);
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_NULL);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package org.tests.json.include;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.config.JsonConfig;
|
||||
import io.ebean.text.PathProperties;
|
||||
import io.ebean.text.json.JsonWriteOptions;
|
||||
import org.tests.json.transientproperties.EJsonTransientEntityList;
|
||||
import org.tests.json.transientproperties.EJsonTransientList;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.assertj.core.api.StrictAssertions.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestJsonExcludeTransientEmptyList {
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonNull() throws Exception {
|
||||
|
||||
EJsonTransientList bean = new EJsonTransientList();
|
||||
bean.setId(99L);
|
||||
bean.setFileNames(new ArrayList<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_NULL);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99,\"fileNames\":[]}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson_NonEmpty() throws Exception {
|
||||
|
||||
EJsonTransientList bean = new EJsonTransientList();
|
||||
bean.setId(99L);
|
||||
bean.setFileNames(new ArrayList<>());
|
||||
|
||||
JsonWriteOptions options = new JsonWriteOptions();
|
||||
options.setInclude(JsonConfig.Include.NON_EMPTY);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, options);
|
||||
|
||||
String expectedJson = "{\"id\":99}";
|
||||
|
||||
assertEquals(expectedJson, asJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_with_transientExcludeFromPathProperties() throws Exception {
|
||||
|
||||
EJsonTransientEntityList bean = new EJsonTransientEntityList();
|
||||
bean.setId(99L);
|
||||
bean.setName("John");
|
||||
|
||||
PathProperties pathProps = PathProperties.parse("id,name");
|
||||
|
||||
String asJson = Ebean.json().toJson(bean, pathProps);
|
||||
|
||||
assertThat(asJson).isEqualTo("{\"id\":99,\"name\":\"John\"}");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Sql
|
||||
@Entity
|
||||
public class EJsonJacksonIgnore {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@JsonIgnore
|
||||
private Boolean basic;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Boolean getBasic() {
|
||||
return basic;
|
||||
}
|
||||
|
||||
public void setBasic(Boolean basic) {
|
||||
this.basic = basic;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
import org.tests.model.basic.Order;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Transient;
|
||||
import java.util.List;
|
||||
|
||||
@Sql
|
||||
@Entity
|
||||
public class EJsonTransientEntityList {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@Transient
|
||||
private Boolean basic;
|
||||
|
||||
@Transient
|
||||
private List<Order> orders;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Boolean getBasic() {
|
||||
return basic;
|
||||
}
|
||||
|
||||
public void setBasic(Boolean basic) {
|
||||
this.basic = basic;
|
||||
}
|
||||
|
||||
public List<Order> getOrders() {
|
||||
return orders;
|
||||
}
|
||||
|
||||
public void setOrders(List<Order> orders) {
|
||||
this.orders = orders;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Transient;
|
||||
import java.util.List;
|
||||
|
||||
@Sql
|
||||
@Entity
|
||||
public class EJsonTransientList {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@Transient
|
||||
private Boolean basic;
|
||||
|
||||
@Transient
|
||||
private List<String> fileNames;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Boolean getBasic() {
|
||||
return basic;
|
||||
}
|
||||
|
||||
public void setBasic(Boolean basic) {
|
||||
this.basic = basic;
|
||||
}
|
||||
|
||||
public List<String> getFileNames() {
|
||||
return fileNames;
|
||||
}
|
||||
|
||||
public void setFileNames(List<String> fileNames) {
|
||||
this.fileNames = fileNames;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
@Sql
|
||||
@Entity
|
||||
public class EJsonTransientObject {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@Transient
|
||||
private Boolean basic;
|
||||
|
||||
@Transient
|
||||
private SomeBean someBean;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Boolean getBasic() {
|
||||
return basic;
|
||||
}
|
||||
|
||||
public void setBasic(Boolean basic) {
|
||||
this.basic = basic;
|
||||
}
|
||||
|
||||
public SomeBean getSomeBean() {
|
||||
return someBean;
|
||||
}
|
||||
|
||||
public void setSomeBean(SomeBean someBean) {
|
||||
this.someBean = someBean;
|
||||
}
|
||||
|
||||
public static class SomeBean {
|
||||
|
||||
public String name;
|
||||
|
||||
public String baz;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Transient;
|
||||
import java.util.List;
|
||||
|
||||
@Sql
|
||||
@Entity
|
||||
public class ModelA {
|
||||
|
||||
@Id
|
||||
int id;
|
||||
|
||||
String a;
|
||||
|
||||
// transient mapping to an entity bean
|
||||
@Transient
|
||||
List<ModelB> list;
|
||||
|
||||
public String getA() {
|
||||
return a;
|
||||
}
|
||||
|
||||
public void setA(String a) {
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
public List<ModelB> getList() {
|
||||
return list;
|
||||
}
|
||||
|
||||
public void setList(List<ModelB> list) {
|
||||
this.list = list;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
|
||||
import io.ebean.annotation.Sql;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
|
||||
@Sql
|
||||
@Entity
|
||||
public class ModelB {
|
||||
|
||||
Integer oneField;
|
||||
|
||||
Integer twoField;
|
||||
|
||||
public Integer getOneField() {
|
||||
return oneField;
|
||||
}
|
||||
|
||||
public void setOneField(Integer oneField) {
|
||||
this.oneField = oneField;
|
||||
}
|
||||
|
||||
public Integer getTwoField() {
|
||||
return twoField;
|
||||
}
|
||||
|
||||
public void setTwoField(Integer twoField) {
|
||||
this.twoField = twoField;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestJacksonIgnore {
|
||||
|
||||
@Test
|
||||
public void testJacksonJsonIgnoreAnnotation() throws Exception {
|
||||
|
||||
EJsonJacksonIgnore bean = new EJsonJacksonIgnore();
|
||||
bean.setId(99L);
|
||||
bean.setName("foo");
|
||||
bean.setBasic(Boolean.TRUE);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean);
|
||||
|
||||
// ignored on write
|
||||
assertFalse(asJson.contains("basic"));
|
||||
|
||||
EJsonJacksonIgnore bean1 = Ebean.json().toBean(EJsonJacksonIgnore.class, asJson);
|
||||
|
||||
assertNull(bean1.getBasic());
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
|
||||
// ignored on read
|
||||
String jsonFull = "{\"id\":99,\"name\":\"foo\",\"basic\":true}";
|
||||
|
||||
bean1 = Ebean.json().toBean(EJsonJacksonIgnore.class, jsonFull);
|
||||
|
||||
assertNull(bean1.getBasic());
|
||||
assertEquals(bean.getId(), bean1.getId());
|
||||
assertEquals(bean.getName(), bean1.getName());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.text.PathProperties;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.assertj.core.api.StrictAssertions.assertThat;
|
||||
|
||||
public class TestModelAJson {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
ModelA a = new ModelA();
|
||||
a.setId(1);
|
||||
a.setA("a");
|
||||
|
||||
ModelB b = new ModelB();
|
||||
b.setOneField(1);
|
||||
b.setTwoField(1);
|
||||
|
||||
a.setList(new ArrayList<>());
|
||||
a.getList().add(b);
|
||||
|
||||
PathProperties pathProperties = PathProperties.parse("(a,list(oneField))");
|
||||
|
||||
String json = Ebean.json().toJson(a, pathProperties);
|
||||
|
||||
assertThat(json).isEqualTo("{\"a\":\"a\",\"list\":[{\"oneField\":1}]}");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestTransientListProperty {
|
||||
|
||||
@Test
|
||||
public void testWithTransientListProperty() throws Exception {
|
||||
|
||||
String rawJson = "{\"basic\":true,\"fileNames\":[\"1\"]}";
|
||||
|
||||
EJsonTransientList bean = Ebean.json().toBean(EJsonTransientList.class, rawJson);
|
||||
|
||||
assertEquals(true, bean.getBasic());
|
||||
assertEquals(1, bean.getFileNames().size());
|
||||
|
||||
String asJson = Ebean.json().toJson(bean);
|
||||
|
||||
assertEquals(rawJson, asJson);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.tests.json.transientproperties;
|
||||
|
||||
import io.ebean.Ebean;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestTransientObjectProperty {
|
||||
|
||||
@Test
|
||||
public void testToBeanToJson() throws Exception {
|
||||
|
||||
String rawJson = "{\"name\":\"entityBeanName\",\"basic\":true,\"someBean\":{\"name\":\"transientBeanName\",\"baz\":\"foo\"}}";
|
||||
|
||||
EJsonTransientObject bean = Ebean.json().toBean(EJsonTransientObject.class, rawJson);
|
||||
|
||||
assertEquals("entityBeanName", bean.getName());
|
||||
assertEquals(true, bean.getBasic());
|
||||
assertEquals("transientBeanName", bean.getSomeBean().name);
|
||||
assertEquals("foo", bean.getSomeBean().baz);
|
||||
|
||||
String asJson = Ebean.json().toJson(bean);
|
||||
|
||||
assertEquals(rawJson, asJson);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user