Use Integer return type for Number return types except Double and Float.
Lettuce's ValueOutput doesn't RESP 3 long values so we must use IntegerOutput instead. Closes #3090
This commit is contained in:
@@ -73,7 +73,11 @@ public enum ReturnType {
|
||||
return ReturnType.BOOLEAN;
|
||||
}
|
||||
|
||||
if (ClassUtils.isAssignable(Long.class, javaType)) {
|
||||
if (ClassUtils.isAssignable(Double.class, javaType) || ClassUtils.isAssignable(Float.class, javaType)) {
|
||||
return ReturnType.VALUE;
|
||||
}
|
||||
|
||||
if (ClassUtils.isAssignable(Number.class, javaType)) {
|
||||
return ReturnType.INTEGER;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,8 +34,19 @@ class ReturnTypeUnitTests {
|
||||
@ParameterizedTest // DATAREDIS-1245
|
||||
@ValueSource(classes = { List.class, ArrayList.class, LinkedList.class })
|
||||
void shouldConsiderListsAsMultiType(Class<?> listClass) {
|
||||
|
||||
assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.MULTI);
|
||||
}
|
||||
|
||||
@ParameterizedTest // GH-3090
|
||||
@ValueSource(classes = { Integer.class, Long.class, Number.class })
|
||||
void shouldConsiderIntegerType(Class<?> listClass) {
|
||||
assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.INTEGER);
|
||||
}
|
||||
|
||||
@ParameterizedTest // GH-3090
|
||||
@ValueSource(classes = { Double.class, Float.class, String.class })
|
||||
void shouldConsiderValueType(Class<?> listClass) {
|
||||
assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.VALUE);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user