Fix for issue 17, Fix JSON support for TimeZone

This commit is contained in:
Robin Bygrave
2013-04-24 00:08:25 +12:00
parent 5761816fc9
commit 85f3a8987d
9 changed files with 345 additions and 122 deletions
@@ -0,0 +1,42 @@
package com.avaje.tests.model.basic;
import java.util.TimeZone;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class BeanWithTimeZone {
@Id
Long id;
String name;
TimeZone timezone;
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 TimeZone getTimezone() {
return timezone;
}
public void setTimezone(TimeZone timezone) {
this.timezone = timezone;
}
}
@@ -0,0 +1,42 @@
package com.avaje.tests.model.basic;
import java.util.TimeZone;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class BeanWithTimezone {
@Id
Long id;
String name;
TimeZone timezone;
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 TimeZone getTimezone() {
return timezone;
}
public void setTimezone(TimeZone timezone) {
this.timezone = timezone;
}
}
@@ -0,0 +1,17 @@
package com.avaje.tests.model.basic;
public enum SomeEnum {
ALPHA("Some nice Alpha"),
BETA("Some nice Beta");
String description;
SomeEnum(String description) {
this.description = description;
}
public String toString() {
return description;
}
}
@@ -0,0 +1,42 @@
package com.avaje.tests.model.basic;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.Id;
@Entity
public class SomeEnumBean {
@Id
Long id;
@Enumerated
SomeEnum someEnum;
String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public SomeEnum getSomeEnum() {
return someEnum;
}
public void setSomeEnum(SomeEnum someEnum) {
this.someEnum = someEnum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@@ -0,0 +1,42 @@
package com.avaje.tests.text.json;
import java.util.TimeZone;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.text.json.JsonContext;
import com.avaje.tests.model.basic.BeanWithTimeZone;
import junit.framework.TestCase;
public class TestJsonBeanWithTimeZone extends TestCase {
public void testSimple() {
TimeZone defaultTimeZone = TimeZone.getDefault();
String[] ids = TimeZone.getAvailableIDs(defaultTimeZone.getRawOffset());
System.out.println(ids);
String id = defaultTimeZone.getID();
TimeZone timeZone = TimeZone.getTimeZone(id);
assertEquals(defaultTimeZone, timeZone);
BeanWithTimeZone bean = new BeanWithTimeZone();
bean.setName("foo");
bean.setTimezone(TimeZone.getDefault());
JsonContext jsonContext = Ebean.createJsonContext();
String jsonContent = jsonContext.toJsonString(bean);
BeanWithTimeZone bean2 = jsonContext.toBean(BeanWithTimeZone.class, jsonContent);
assertEquals(bean.getTimezone(), bean2.getTimezone());
Ebean.save(bean);
BeanWithTimeZone bean3 = Ebean.find(BeanWithTimeZone.class, bean.getId());
assertEquals(bean.getTimezone(), bean3.getTimezone());
}
}
@@ -0,0 +1,31 @@
package com.avaje.tests.text.json;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.text.json.JsonContext;
import com.avaje.tests.model.basic.SomeEnum;
import com.avaje.tests.model.basic.SomeEnumBean;
import junit.framework.TestCase;
public class TestJsonSomeEnumWithToString extends TestCase {
public void testJsonConversion() {
SomeEnumBean bean = new SomeEnumBean();
bean.setId(100l);
bean.setName("Some name");
bean.setSomeEnum(SomeEnum.ALPHA);
JsonContext json = Ebean.createJsonContext();
String jsonContent = json.toJsonString(bean);
SomeEnumBean bean2 = json.toBean(SomeEnumBean.class, jsonContent);
assertEquals(bean.getSomeEnum(), bean2.getSomeEnum());
assertEquals(bean.getName(), bean2.getName());
assertEquals(bean.getId(), bean2.getId());
}
}