mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#899 - ENH: Add @UnmappedJson support ... (mostly for document store only use / ElasticSearch)
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package com.avaje.tests.json;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.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,55 @@
|
||||
package com.avaje.tests.model.json;
|
||||
|
||||
import com.avaje.ebean.annotation.UnmappedJson;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Version;
|
||||
import java.util.Map;
|
||||
|
||||
@Entity
|
||||
public class EBasicJsonUnmapped {
|
||||
|
||||
@Id
|
||||
Long id;
|
||||
|
||||
@Version
|
||||
Long version;
|
||||
|
||||
String name;
|
||||
|
||||
@UnmappedJson
|
||||
Map<String, Object> unmapped;
|
||||
|
||||
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 Map<String, Object> getUnmapped() {
|
||||
return unmapped;
|
||||
}
|
||||
|
||||
public void setUnmapped(Map<String, Object> unmapped) {
|
||||
this.unmapped = unmapped;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user