diff --git a/src/main/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDate.java b/src/main/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDate.java index 82a7bc1ee..7c2d6a5db 100644 --- a/src/main/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDate.java +++ b/src/main/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDate.java @@ -27,7 +27,7 @@ public class ScalarTypeJodaLocalDate extends ScalarTypeBaseDate { @Override public LocalDate convertFromDate(Date date) { - return new LocalDate(date.getTime()); + return LocalDate.fromDateFields(date); } @Override diff --git a/src/test/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDateTest.java b/src/test/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDateTest.java index d303c9552..60ee1c92d 100644 --- a/src/test/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDateTest.java +++ b/src/test/java/io/ebeaninternal/server/type/ScalarTypeJodaLocalDateTest.java @@ -10,10 +10,10 @@ import static org.assertj.core.api.Assertions.assertThat; public class ScalarTypeJodaLocalDateTest { - ScalarTypeJodaLocalDate type = new ScalarTypeJodaLocalDate(); + private ScalarTypeJodaLocalDate type = new ScalarTypeJodaLocalDate(); @Test - public void convertToMillis_convertFromMillis() throws Exception { + public void convertToMillis_convertFromMillis() { LocalDate localDate = new LocalDate(); long millis = type.convertToMillis(localDate); @@ -23,18 +23,23 @@ public class ScalarTypeJodaLocalDateTest { } @Test - public void convertToDate_convertFromDate() throws Exception { + public void convertToDate_convertFromDate() { + + convertDate(new LocalDate()); + convertDate(new LocalDate(1899, 12, 1)); + convertDate(new LocalDate(1900, 1, 1)); + } + + private void convertDate(LocalDate localDate) { - LocalDate localDate = new LocalDate(); Date dateValue = type.convertToDate(localDate); LocalDate localDate1 = type.convertFromDate(dateValue); assertThat(localDate).isEqualTo(localDate1); } - @Test - public void toJdbcType() throws Exception { + public void toJdbcType() { LocalDate localDate = new LocalDate(); Object jdbcType = type.toJdbcType(localDate); @@ -44,7 +49,7 @@ public class ScalarTypeJodaLocalDateTest { } @Test - public void toBeanType() throws Exception { + public void toBeanType() { LocalDate localDate = new LocalDate(); Date dateValue = type.convertToDate(localDate); diff --git a/src/test/java/org/tests/model/joda/BasicJodaEntity.java b/src/test/java/org/tests/model/joda/BasicJodaEntity.java index 52e528e27..78ce42408 100644 --- a/src/test/java/org/tests/model/joda/BasicJodaEntity.java +++ b/src/test/java/org/tests/model/joda/BasicJodaEntity.java @@ -3,6 +3,7 @@ package org.tests.model.joda; import io.ebean.annotation.CreatedTimestamp; import io.ebean.annotation.UpdatedTimestamp; import org.joda.time.DateTime; +import org.joda.time.LocalDate; import org.joda.time.LocalDateTime; import org.joda.time.Period; @@ -26,6 +27,8 @@ public class BasicJodaEntity { Period period; + LocalDate localDate; + @Version LocalDateTime version; @@ -76,4 +79,12 @@ public class BasicJodaEntity { public void setVersion(LocalDateTime version) { this.version = version; } + + public void setLocalDate(LocalDate localDate) { + this.localDate = localDate; + } + + public LocalDate getLocalDate() { + return localDate; + } } diff --git a/src/test/java/org/tests/model/joda/TestJodaInsertUpdate.java b/src/test/java/org/tests/model/joda/TestJodaInsertUpdate.java index df8a79fb5..b29737060 100644 --- a/src/test/java/org/tests/model/joda/TestJodaInsertUpdate.java +++ b/src/test/java/org/tests/model/joda/TestJodaInsertUpdate.java @@ -1,8 +1,9 @@ package org.tests.model.joda; import io.ebean.BaseTestCase; -import io.ebean.Ebean; +import io.ebean.DB; import org.joda.time.DateTime; +import org.joda.time.LocalDate; import org.joda.time.LocalDateTime; import org.joda.time.Period; import org.junit.Test; @@ -19,8 +20,8 @@ public class TestJodaInsertUpdate extends BaseTestCase { BasicJodaEntity e0 = new BasicJodaEntity(); e0.setName("foo"); - - Ebean.save(e0); + e0.setLocalDate(new LocalDate(1899, 12, 1)); + DB.save(e0); LocalDateTime created = e0.getCreated(); DateTime updated = e0.getUpdated(); @@ -32,7 +33,7 @@ public class TestJodaInsertUpdate extends BaseTestCase { Thread.sleep(10); e0.setName("bar"); e0.setPeriod(Period.years(12).plusDays(1)); - Ebean.save(e0); + DB.save(e0); LocalDateTime created1 = e0.getCreated(); DateTime updated1 = e0.getUpdated(); @@ -43,8 +44,31 @@ public class TestJodaInsertUpdate extends BaseTestCase { assertNotSame(version, version1); - BasicJodaEntity found = Ebean.find(BasicJodaEntity.class, e0.getId()); + BasicJodaEntity found = DB.find(BasicJodaEntity.class, e0.getId()); assertThat(found.getPeriod()).isEqualTo(e0.getPeriod()); + assertThat(found.getLocalDate()).isEqualTo(e0.getLocalDate()); + } + + @Test + public void test_various() { + test_at(new LocalDate(1700, 12, 1)); + test_at(new LocalDate(1899, 12, 1)); + test_at(new LocalDate(1900, 1, 1)); + test_at(new LocalDate()); + test_at(LocalDate.now()); + } + + private void test_at(LocalDate date) { + + BasicJodaEntity e0 = new BasicJodaEntity(); + e0.setName("Various local dates"); + e0.setLocalDate(date); + DB.save(e0); + + BasicJodaEntity found = DB.find(BasicJodaEntity.class, e0.getId()); + assertThat(found.getLocalDate()).isEqualTo(e0.getLocalDate()); + + DB.delete(found); } }