Skip to content

Commit

Permalink
HBX-2780: Create Interface for TableFilterWrapper
Browse files Browse the repository at this point in the history
  - Fix build and test problems on CI:
    * Initialize 'TypeRegistry#TYPE_REGISTRY' and get rid of the static initialization
    * Perform lazy initialization on 'TypeRegistry#TYPE_FORMATS' in method 'TypeRegistry#getTypeFormats()'
    * Initialize the default Locale to a fixed one in TypeFactoryWrapperTest and in TypeRegistryTest

Signed-off-by: Koen Aers <koen.aers@gmail.com>
  • Loading branch information
koentsje committed Apr 30, 2024
1 parent 4c77f97 commit b84154f
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,10 @@

public class TypeRegistry {

static Map<String, TypeWrapper> TYPE_REGISTRY = null;
static Map<String, TypeWrapper> TYPE_REGISTRY = new HashMap<String, TypeWrapper>();
static Map<TypeWrapper, String> TYPE_FORMATS = null;
private static final BasicTypeRegistry BASIC_TYPE_REGISTRY = new TypeConfiguration().getBasicTypeRegistry();

static {
initializeTypeRegistry();
initializeTypeFormats();
}

public static TypeWrapper getType(String name) {
if (!TYPE_REGISTRY.containsKey(name)) {
Type basicType = BASIC_TYPE_REGISTRY.getRegisteredType(name);
Expand All @@ -40,65 +35,41 @@ public static TypeWrapper getType(String name) {
}

public static Map<TypeWrapper, String> getTypeFormats() {
if (TYPE_FORMATS == null) {
initializeTypeFormats();
}
return TYPE_FORMATS;
}

private static void initializeTypeFormats() {
TYPE_FORMATS = new HashMap<TypeWrapper, String>();
addTypeFormat(TYPE_REGISTRY.get("boolean"), Boolean.TRUE);
addTypeFormat(TYPE_REGISTRY.get("byte"), Byte.valueOf((byte) 42));
addTypeFormat(TYPE_REGISTRY.get("big_integer"), BigInteger.valueOf(42));
addTypeFormat(TYPE_REGISTRY.get("short"), Short.valueOf((short) 42));
addTypeFormat(TYPE_REGISTRY.get("calendar"), new GregorianCalendar());
addTypeFormat(TYPE_REGISTRY.get("calendar_date"), new GregorianCalendar());
addTypeFormat(TYPE_REGISTRY.get("integer"), Integer.valueOf(42));
addTypeFormat(TYPE_REGISTRY.get("big_decimal"), new BigDecimal(42.0));
addTypeFormat(TYPE_REGISTRY.get("character"), Character.valueOf('h'));
addTypeFormat(TYPE_REGISTRY.get("class"), Class.class);
addTypeFormat(TYPE_REGISTRY.get("currency"), Currency.getInstance(Locale.getDefault()));
addTypeFormat(TYPE_REGISTRY.get("date"), new Date());
addTypeFormat(TYPE_REGISTRY.get("double"), Double.valueOf(42.42));
addTypeFormat(TYPE_REGISTRY.get("float"), Float.valueOf((float)42.42));
addTypeFormat(TYPE_REGISTRY.get("locale"), Locale.getDefault());
addTypeFormat(TYPE_REGISTRY.get("long"), Long.valueOf(42));
addTypeFormat(TYPE_REGISTRY.get("string"), "a string"); //$NON-NLS-1$
addTypeFormat(TYPE_REGISTRY.get("text"), "a text"); //$NON-NLS-1$
addTypeFormat(TYPE_REGISTRY.get("time"), new Date());
addTypeFormat(TYPE_REGISTRY.get("timestamp"), new Date());
addTypeFormat(TYPE_REGISTRY.get("timezone"), TimeZone.getDefault());
addTypeFormat(TYPE_REGISTRY.get("true_false"), Boolean.TRUE);
addTypeFormat(TYPE_REGISTRY.get("yes_no"), Boolean.TRUE);
addTypeFormat(getType("boolean"), Boolean.TRUE);
addTypeFormat(getType("byte"), Byte.valueOf((byte) 42));
addTypeFormat(getType("big_integer"), BigInteger.valueOf(42));
addTypeFormat(getType("short"), Short.valueOf((short) 42));
addTypeFormat(getType("calendar"), new GregorianCalendar());
addTypeFormat(getType("calendar_date"), new GregorianCalendar());
addTypeFormat(getType("integer"), Integer.valueOf(42));
addTypeFormat(getType("big_decimal"), new BigDecimal(42.0));
addTypeFormat(getType("character"), Character.valueOf('h'));
addTypeFormat(getType("class"), Class.class);
addTypeFormat(getType("currency"), Currency.getInstance(Locale.getDefault()));
addTypeFormat(getType("date"), new Date());
addTypeFormat(getType("double"), Double.valueOf(42.42));
addTypeFormat(getType("float"), Float.valueOf((float)42.42));
addTypeFormat(getType("locale"), Locale.getDefault());
addTypeFormat(getType("long"), Long.valueOf(42));
addTypeFormat(getType("string"), "a string"); //$NON-NLS-1$
addTypeFormat(getType("text"), "a text"); //$NON-NLS-1$
addTypeFormat(getType("time"), new Date());
addTypeFormat(getType("timestamp"), new Date());
addTypeFormat(getType("timezone"), TimeZone.getDefault());
addTypeFormat(getType("true_false"), Boolean.TRUE);
addTypeFormat(getType("yes_no"), Boolean.TRUE);
}

private static void addTypeFormat(TypeWrapper type, Object value) {
TYPE_FORMATS.put(type, type.toString(value));
}

private static void initializeTypeRegistry() {
TYPE_REGISTRY = new HashMap<String, TypeWrapper>();
TYPE_REGISTRY.put("boolean", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("boolean")));
TYPE_REGISTRY.put("byte", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("byte")));
TYPE_REGISTRY.put("big_integer", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("big_integer")));
TYPE_REGISTRY.put("short", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("short")));
TYPE_REGISTRY.put("calendar", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("calendar")));
TYPE_REGISTRY.put("calendar_date", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("calendar_date")));
TYPE_REGISTRY.put("integer", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("integer")));
TYPE_REGISTRY.put("big_decimal", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("big_decimal")));
TYPE_REGISTRY.put("character", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("character")));
TYPE_REGISTRY.put("class", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("class")));
TYPE_REGISTRY.put("currency", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("currency")));
TYPE_REGISTRY.put("date", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("date")));
TYPE_REGISTRY.put("double", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("double")));
TYPE_REGISTRY.put("float", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("float")));
TYPE_REGISTRY.put("locale", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("locale")));
TYPE_REGISTRY.put("long", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("long")));
TYPE_REGISTRY.put("string", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("string")));
TYPE_REGISTRY.put("text", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("text")));
TYPE_REGISTRY.put("time", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("time")));
TYPE_REGISTRY.put("timestamp", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("timestamp")));
TYPE_REGISTRY.put("timezone", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("timezone")));
TYPE_REGISTRY.put("true_false", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("true_false")));
TYPE_REGISTRY.put("yes_no", TypeWrapperFactory.createTypeWrapper(BASIC_TYPE_REGISTRY.getRegisteredType("yes_no")));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,19 @@

import org.hibernate.tool.orm.jbt.internal.factory.TypeFactoryWrapperFactory;
import org.hibernate.tool.orm.jbt.internal.util.TypeRegistry;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class TypeFactoryWrapperTest {

private TypeFactoryWrapper typeFactoryWrapper = null;

@BeforeAll
public static void beforeAll() {
Locale.setDefault(new Locale("nl", "BE"));
}

@BeforeEach
public void beforeEach() {
typeFactoryWrapper = TypeFactoryWrapperFactory.createTypeFactoryWrapper();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.text.SimpleDateFormat;
import java.time.ZoneId;
Expand All @@ -15,12 +16,34 @@
import java.util.TimeZone;

import org.hibernate.tool.orm.jbt.api.TypeWrapper;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class TypeRegistryTest {

@BeforeAll
public static void beforeAll() {
Locale.setDefault(new Locale("nl", "BE"));
}

@BeforeEach
public void beforeEach() {
TypeRegistry.TYPE_REGISTRY.clear();
TypeRegistry.TYPE_FORMATS = null;
}

@Test
public void testGetType() {
assertNull(TypeRegistry.TYPE_REGISTRY.get(String.class.getName()));
TypeWrapper stringWrapper = TypeRegistry.getType(String.class.getName());
assertNotNull(stringWrapper);
assertSame(TypeRegistry.TYPE_REGISTRY.get(String.class.getName()), stringWrapper);
assertNull(TypeRegistry.TYPE_REGISTRY.get(Foo.class.getName()));
TypeWrapper fooWrapper = TypeRegistry.getType(Foo.class.getName());
assertNull(fooWrapper);
assertNull(TypeRegistry.TYPE_REGISTRY.get(Foo.class.getName()));
assertNull(TypeRegistry.getType("foo"));
assertEquals("boolean", TypeRegistry.getType("boolean").getName());
assertEquals("byte", TypeRegistry.getType("byte").getName());
assertEquals("big_integer", TypeRegistry.getType("big_integer").getName());
Expand All @@ -44,18 +67,11 @@ public void testGetType() {
assertEquals("timezone", TypeRegistry.getType("timezone").getName());
assertEquals("true_false", TypeRegistry.getType("true_false").getName());
assertEquals("yes_no", TypeRegistry.getType("yes_no").getName());
assertNull(TypeRegistry.TYPE_REGISTRY.get(String.class.getName()));
TypeWrapper stringWrapper = TypeRegistry.getType(String.class.getName());
assertNotNull(stringWrapper);
assertSame(TypeRegistry.TYPE_REGISTRY.get(String.class.getName()), stringWrapper);
assertNull(TypeRegistry.TYPE_REGISTRY.get(Foo.class.getName()));
TypeWrapper fooWrapper = TypeRegistry.getType(Foo.class.getName());
assertNull(fooWrapper);
assertNull(TypeRegistry.TYPE_REGISTRY.get(Foo.class.getName()));
}

@Test
public void testGetTypeFormats() {
assertTrue(true);
Map<TypeWrapper, String> typeFormats = TypeRegistry.getTypeFormats();
assertEquals(23, typeFormats.size());
assertEquals("true", typeFormats.get(TypeRegistry.getType("boolean")));
Expand Down

0 comments on commit b84154f

Please sign in to comment.