#899 - ENH: Add @UnmappedJson support ... (mostly for document store only use / ElasticSearch)

This commit is contained in:
Rob Bygrave
2016-11-25 23:58:55 +13:00
parent 5d7c287821
commit 609dc233a8
10 changed files with 183 additions and 10 deletions
@@ -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;
}
}