Browse Source

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.
pull/469/head
Mark Paluch 5 years ago
parent
commit
5876bd2e5a
No known key found for this signature in database
GPG Key ID: 51A00FA751B91849
  1. 3
      src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java
  2. 7
      src/main/java/org/springframework/data/repository/query/Parameter.java

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

@ -113,7 +113,8 @@ public abstract class AbstractRepositoryMetadata implements RepositoryMetadata { @@ -113,7 +113,8 @@ public abstract class AbstractRepositoryMetadata implements RepositoryMetadata {
return ReactiveWrapperConverters.unwrapWrapperTypes(returnType).getType();
}
return QueryExecutionConverters.unwrapWrapperTypes(returnType).getType();
return ReactiveWrapperConverters.unwrapWrapperTypes(QueryExecutionConverters.unwrapWrapperTypes(returnType))
.getType();
}
/*

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

@ -30,6 +30,7 @@ import org.springframework.data.domain.Pageable; @@ -30,6 +30,7 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.util.ClassUtils;
import org.springframework.data.repository.util.QueryExecutionConverters;
import org.springframework.data.repository.util.ReactiveWrapperConverters;
import org.springframework.data.util.ClassTypeInformation;
import org.springframework.data.util.Lazy;
import org.springframework.data.util.TypeInformation;
@ -228,7 +229,8 @@ public class Parameter { @@ -228,7 +229,8 @@ public class Parameter {
TypeInformation<?> bound = parameterTypes.getTypeArguments().get(0);
TypeInformation<Object> returnType = ClassTypeInformation.fromReturnTypeOf(method);
return bound.equals(QueryExecutionConverters.unwrapWrapperTypes(returnType));
return bound
.equals(ReactiveWrapperConverters.unwrapWrapperTypes(QueryExecutionConverters.unwrapWrapperTypes(returnType)));
}
/**
@ -239,7 +241,8 @@ public class Parameter { @@ -239,7 +241,8 @@ public class Parameter {
* @see QueryExecutionConverters
*/
private static boolean isWrapped(MethodParameter parameter) {
return QueryExecutionConverters.supports(parameter.getParameterType());
return QueryExecutionConverters.supports(parameter.getParameterType())
|| ReactiveWrapperConverters.supports(parameter.getParameterType());
}
/**

Loading…
Cancel
Save