Skip to content

Commit 160ab43

Browse files
committed
Fixed invalid result adapting when no result for Optional and List types.
1 parent b803f8a commit 160ab43

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

core/src/main/java/me/zort/sqllib/mapping/DefaultResultAdapter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public Object adaptResult(Method method, QueryResult result) {
1717
if(returnType.equals(QueryResult.class)) {
1818
return result;
1919
} else if (isVoid(returnType) || !(result instanceof QueryRowsResult)) {
20-
return null;
20+
return noResult(returnType, result.isSuccessful());
2121
}
2222
QueryRowsResult<?> rows = (QueryRowsResult<?>) result;
2323
if (List.class.isAssignableFrom(returnType)) return rows;
@@ -38,6 +38,12 @@ public Class<?> retrieveResultType(Method method) {
3838
}
3939
}
4040

41+
private static <T> Object noResult(Class<T> returnType, boolean successful) {
42+
if (Optional.class.isAssignableFrom(returnType)) return Optional.empty();
43+
if (List.class.isAssignableFrom(returnType)) return new QueryRowsResult<T>(successful);
44+
return null;
45+
}
46+
4147
// List<T>
4248
private static Class<?> getGenericArgument(Class<?> clazz, Type genericType, boolean throwNotFound) {
4349
Type[] typeParameters = ((ParameterizedType) genericType).getActualTypeArguments();

0 commit comments

Comments
 (0)