DATACMNS-99 - SimpleTypeHolder considers complex Enums as simple now.
Fixed SimpleTypeHolder.isSimpleType(Class<?> type) for calls where the Class object handed in is derived from an Enum that implements an abstract method. These Class objects return false for a call to isEnum(). So an ….isAssignableFrom(…) check is safer.
This commit is contained in:
@@ -62,6 +62,7 @@ public class SimpleTypeHolder {
|
||||
DEFAULTS.add(Locale.class);
|
||||
DEFAULTS.add(Class.class);
|
||||
DEFAULTS.add(Number.class);
|
||||
DEFAULTS.add(Enum.class);
|
||||
}
|
||||
|
||||
private final Set<Class<?>> simpleTypes;
|
||||
@@ -124,6 +125,6 @@ public class SimpleTypeHolder {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return type.isEnum();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,4 +92,35 @@ public class SimpleTypeHolderUnitTests {
|
||||
SimpleTypeHolder holder = new SimpleTypeHolder();
|
||||
assertThat(holder.isSimpleType(Object.class), is(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void considersSimpleEnumAsSimple() {
|
||||
|
||||
SimpleTypeHolder holder = new SimpleTypeHolder();
|
||||
assertThat(holder.isSimpleType(SimpleEnum.FOO.getClass()), is(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void considersComplexEnumAsSimple() {
|
||||
|
||||
SimpleTypeHolder holder = new SimpleTypeHolder();
|
||||
assertThat(holder.isSimpleType(ComplexEnum.FOO.getClass()), is(true));
|
||||
}
|
||||
|
||||
enum SimpleEnum {
|
||||
|
||||
FOO;
|
||||
}
|
||||
|
||||
enum ComplexEnum {
|
||||
|
||||
FOO {
|
||||
@Override
|
||||
boolean method() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
abstract boolean method();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user