Merge pull request #2447 from FOCONIS/fix-scalartype-problem2

Traverse class hierarchy, when searching for ScalarType
This commit is contained in:
Rob Bygrave authored and GitHub committed 2022-01-13 10:58:05 +13:00
commit b8b6311348
6 files changed
+206 -41

No files matched your search

@@ -15,6 +15,8 @@ import org.tests.model.ivo.converter.MoneyTypeConverter;
import javax.persistence.EnumType;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Calendar;
import java.util.GregorianCalendar;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
@@ -29,7 +31,6 @@ public class TestTypeManager extends BaseTestCase {
DefaultTypeManager typeManager = createTypeManager();
ScalarType<?> type = typeManager.createEnumScalarType(MyEnum.class, null);
typeManager.addEnumType(type, MyEnum.class);
Object val = type.read(new DummyDataReader("A"));
assertThat(val).isEqualTo(MyEnum.Aval);
@@ -131,6 +132,13 @@ public class TestTypeManager extends BaseTestCase {
return new DefaultTypeManager(config, bootupClasses);
}
@Test
public void testCalendar() throws SQLException {
DefaultTypeManager typeManager = createTypeManager();
ScalarType<?> typeB = typeManager.getScalarType(GregorianCalendar.class);
assertThat(typeB).isInstanceOf(ScalarTypeCalendar.class);
}
/**
* Test double DataReader implementation.
*/
@@ -7,6 +7,7 @@ import javax.persistence.Version;
import java.nio.file.Path;
import java.sql.Date;
import java.time.*;
import java.util.Calendar;
@Entity
public class SomeNewTypesBean {
@@ -58,6 +59,8 @@ public class SomeNewTypesBean {
Duration duration;
Calendar calendar;
public Long getId() {
return id;
}
@@ -217,4 +220,12 @@ public class SomeNewTypesBean {
public void setDuration(Duration duration) {
this.duration = duration;
}
public Calendar getCalendar() {
return calendar;
}
public void setCalendar(final Calendar calendar) {
this.calendar = calendar;
}
}
@@ -10,6 +10,7 @@ import org.tests.model.types.SomeNewTypesBean;
import java.io.File;
import java.nio.file.Paths;
import java.time.*;
import java.util.Calendar;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
@@ -44,6 +45,7 @@ public class TestNewTypes extends BaseTestCase {
bean.setPath(Paths.get(TEMP_PATH));
bean.setPeriod(Period.of(4,3,2));
bean.setDuration(Duration.ofMinutes(5));
bean.setCalendar(Calendar.getInstance());
DB.save(bean);
@@ -104,6 +106,10 @@ public class TestNewTypes extends BaseTestCase {
list = DB.find(SomeNewTypesBean.class).where().eq("duration", Duration.ofMinutes(5)).findList();
assertThat(list).isNotEmpty();
// Calendar.getInstance() returns an implementation, which then has to be remapped to ScalarTypeCalendar
list = DB.find(SomeNewTypesBean.class).where().le("calendar", Calendar.getInstance()).findList();
assertThat(list).isNotEmpty();
SomeNewTypesBean fetched = DB.find(SomeNewTypesBean.class, bean.getId());
assertEquals(bean.getZoneId(), fetched.getZoneId());
@@ -122,6 +128,7 @@ public class TestNewTypes extends BaseTestCase {
assertEquals(bean.getPath(), fetched.getPath());
assertEquals(bean.getPeriod(), fetched.getPeriod());
assertEquals(bean.getDuration(), fetched.getDuration());
assertEquals(bean.getCalendar(), fetched.getCalendar());
String asJson = DB.json().toJson(fetched);
@@ -139,10 +146,10 @@ public class TestNewTypes extends BaseTestCase {
assertThat(toBean.getOffsetDateTime()).isEqualToIgnoringNanos(bean.getOffsetDateTime());
assertEquals(bean.getLocalTime().toSecondOfDay(), toBean.getLocalTime().toSecondOfDay());
assertEquals(bean.getInstant().toEpochMilli() / 1000, toBean.getInstant().toEpochMilli() / 1000);
// FIXME: This test fails on Windows with: expected:<\tmp> but was:<C:\tmp>
assertEquals(bean.getPath(), toBean.getPath());
assertEquals(bean.getPeriod(), toBean.getPeriod());
assertEquals(bean.getDuration(), toBean.getDuration());
assertEquals(bean.getCalendar(), toBean.getCalendar());
}