From cf31830cbc263a2612bda62903db198a11d6af59 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Fri, 26 Apr 2019 13:21:19 +1200 Subject: [PATCH] #1677 - No effective change - Add test but not failing etc --- .../java/org/tests/model/basic/UTMaster.java | 11 +++++++ .../TestExplicitTransactionMode.java | 32 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/test/java/org/tests/model/basic/UTMaster.java b/src/test/java/org/tests/model/basic/UTMaster.java index 7cec411fe..f6c9866f1 100644 --- a/src/test/java/org/tests/model/basic/UTMaster.java +++ b/src/test/java/org/tests/model/basic/UTMaster.java @@ -8,6 +8,7 @@ import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Version; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -22,6 +23,8 @@ public class UTMaster extends Model { String description; + LocalDate date; + @Version Integer version; @@ -52,6 +55,14 @@ public class UTMaster extends Model { this.name = name; } + public LocalDate getDate() { + return date; + } + + public void setDate(LocalDate date) { + this.date = date; + } + public String getDescription() { return description; } diff --git a/src/test/java/org/tests/transaction/TestExplicitTransactionMode.java b/src/test/java/org/tests/transaction/TestExplicitTransactionMode.java index 9777f8139..86e939ec9 100644 --- a/src/test/java/org/tests/transaction/TestExplicitTransactionMode.java +++ b/src/test/java/org/tests/transaction/TestExplicitTransactionMode.java @@ -1,5 +1,7 @@ package org.tests.transaction; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; import io.ebean.BaseTestCase; import io.ebean.EbeanServer; import io.ebean.EbeanServerFactory; @@ -12,15 +14,19 @@ import io.ebean.config.properties.PropertiesLoader; import io.ebean.datasource.DataSourceConfig; import io.ebean.datasource.DataSourcePool; import io.ebean.datasource.pool.ConnectionPool; +import io.ebeaninternal.server.type.ScalarTypeLocalDate; import org.junit.Test; import org.tests.model.basic.UTDetail; import org.tests.model.basic.UTMaster; +import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; +import java.time.LocalDate; import java.util.List; import java.util.Properties; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -55,9 +61,12 @@ public class TestExplicitTransactionMode extends BaseTestCase { config.setDdlGenerate(true); config.setDdlRun(true); config.setDdlExtra(false); + config.addClass(ScalarTypeLocalDateAsString.class); EbeanServer ebeanServer = EbeanServerFactory.create(config); + testJsonScalarType(ebeanServer); + Query query = ebeanServer.find(UTMaster.class); List details = query.findList(); assertEquals(0, details.size()); @@ -105,4 +114,27 @@ public class TestExplicitTransactionMode extends BaseTestCase { assertEquals(3, details.size()); } } + + private void testJsonScalarType(EbeanServer ebeanServer) { + UTMaster bean = new UTMaster("one1"); + bean.setDate(LocalDate.of(2019, 04, 20)); + + String json = ebeanServer.json().toJson(bean); + assertThat(json).isEqualTo("{\"name\":\"one1\",\"date\":\"2019-04-20\"}"); + UTMaster jsonMaster = ebeanServer.json().toBean(UTMaster.class, json); + assertThat(jsonMaster.getDate()).isEqualTo(LocalDate.of(2019, 4, 20)); + } + + public static class ScalarTypeLocalDateAsString extends ScalarTypeLocalDate { + + @Override + public LocalDate jsonRead(JsonParser parser) throws IOException { + return super.jsonRead(parser); + } + + @Override + public void jsonWrite(JsonGenerator writer, LocalDate value) throws IOException { + writer.writeString(value.toString()); + } + } }