Support Character.class in EnumConversion

This commit is contained in:
Danilo 2019-02-13 15:07:30 -02:00 committed by Ido Salomon
parent 9ce8af1561
commit c90bd88b54
2 changed files with 10 additions and 3 deletions

View File

@ -58,9 +58,9 @@ public class EnumConversion<T> extends FactoryExpressionBase<T> {
@Override
public T newInstance(Object... args) {
if (args[0] != null) {
if (args[0] instanceof String) {
if (args[0] instanceof String || args[0] instanceof Character) {
@SuppressWarnings("unchecked") //The expression type is an enum
T rv = (T) Enum.valueOf(getType().asSubclass(Enum.class), (String) args[0]);
T rv = (T) Enum.valueOf(getType().asSubclass(Enum.class), (String) args[0].toString());
return rv;
} else if (args[0] instanceof Number) {
return values[((Number) args[0]).intValue()];

View File

@ -11,7 +11,14 @@ import com.querydsl.core.types.dsl.StringPath;
public class EnumConversionTest {
public enum Color { GREEN, BLUE, RED, YELLOW, BLACK, WHITE }
public enum Color { GREEN, BLUE, RED, YELLOW, B, W }
@Test
public void nameForCharacter() {
EnumPath<Color> color = Expressions.enumPath(Color.class, "path");
EnumConversion<Color> conv = new EnumConversion<Color>(color);
assertEquals(Color.W, conv.newInstance('W'));
}
@Test
public void name() {