Skip to content

Commit 5876bd2

Browse files
committed
DATACMNS-1762 - Consider reactive types as wrappers during method introspection.
We now perform type unwrapping and introspection for reactive types for method return types and method arguments after decoupling QueryExecutionConverters.supports(…) from ReactiveWrapperConverters.
1 parent f261220 commit 5876bd2

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ public Class<?> getReturnedDomainClass(Method method) {
113113
return ReactiveWrapperConverters.unwrapWrapperTypes(returnType).getType();
114114
}
115115

116-
return QueryExecutionConverters.unwrapWrapperTypes(returnType).getType();
116+
return ReactiveWrapperConverters.unwrapWrapperTypes(QueryExecutionConverters.unwrapWrapperTypes(returnType))
117+
.getType();
117118
}
118119

119120
/*

src/main/java/org/springframework/data/repository/query/Parameter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.data.domain.Sort;
3131
import org.springframework.data.repository.util.ClassUtils;
3232
import org.springframework.data.repository.util.QueryExecutionConverters;
33+
import org.springframework.data.repository.util.ReactiveWrapperConverters;
3334
import org.springframework.data.util.ClassTypeInformation;
3435
import org.springframework.data.util.Lazy;
3536
import org.springframework.data.util.TypeInformation;
@@ -228,7 +229,8 @@ private static boolean isDynamicProjectionParameter(MethodParameter parameter) {
228229
TypeInformation<?> bound = parameterTypes.getTypeArguments().get(0);
229230
TypeInformation<Object> returnType = ClassTypeInformation.fromReturnTypeOf(method);
230231

231-
return bound.equals(QueryExecutionConverters.unwrapWrapperTypes(returnType));
232+
return bound
233+
.equals(ReactiveWrapperConverters.unwrapWrapperTypes(QueryExecutionConverters.unwrapWrapperTypes(returnType)));
232234
}
233235

234236
/**
@@ -239,7 +241,8 @@ private static boolean isDynamicProjectionParameter(MethodParameter parameter) {
239241
* @see QueryExecutionConverters
240242
*/
241243
private static boolean isWrapped(MethodParameter parameter) {
242-
return QueryExecutionConverters.supports(parameter.getParameterType());
244+
return QueryExecutionConverters.supports(parameter.getParameterType())
245+
|| ReactiveWrapperConverters.supports(parameter.getParameterType());
243246
}
244247

245248
/**

0 commit comments

Comments
 (0)