Skip to content

Commit 0c90dea

Browse files
committed
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
1 parent 2bcdd36 commit 0c90dea

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/main/java/org/springframework/data/redis/connection/ReturnType.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ public static ReturnType fromJavaType(@Nullable Class<?> javaType) {
7373
return ReturnType.BOOLEAN;
7474
}
7575

76-
if (ClassUtils.isAssignable(Long.class, javaType)) {
76+
if (ClassUtils.isAssignable(Double.class, javaType) || ClassUtils.isAssignable(Float.class, javaType)) {
77+
return ReturnType.VALUE;
78+
}
79+
80+
if (ClassUtils.isAssignable(Number.class, javaType)) {
7781
return ReturnType.INTEGER;
7882
}
7983

src/test/java/org/springframework/data/redis/connection/ReturnTypeUnitTests.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,19 @@ class ReturnTypeUnitTests {
3434
@ParameterizedTest // DATAREDIS-1245
3535
@ValueSource(classes = { List.class, ArrayList.class, LinkedList.class })
3636
void shouldConsiderListsAsMultiType(Class<?> listClass) {
37-
3837
assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.MULTI);
3938
}
4039

40+
@ParameterizedTest // GH-3090
41+
@ValueSource(classes = { Integer.class, Long.class, Number.class })
42+
void shouldConsiderIntegerType(Class<?> listClass) {
43+
assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.INTEGER);
44+
}
45+
46+
@ParameterizedTest // GH-3090
47+
@ValueSource(classes = { Double.class, Float.class, String.class })
48+
void shouldConsiderValueType(Class<?> listClass) {
49+
assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.VALUE);
50+
}
51+
4152
}

0 commit comments

Comments
 (0)