DATACMNS-1762 - Remove ReactiveWrappers support from from QueryExecutionConverters.
ReactiveWrappers doesn't belong in there in the first place so we're removing ReactiveWrappers support from QueryExecutionConverters so ReactiveWrappers is used from parts that need to be reactive-aware. Original Pull Request: #459
This commit is contained in:
committed by
Christoph Strobl
parent
eadbe80f03
commit
9ced611ea5
@@ -27,6 +27,7 @@ import org.springframework.data.repository.Repository;
|
||||
import org.springframework.data.repository.core.CrudMethods;
|
||||
import org.springframework.data.repository.core.RepositoryMetadata;
|
||||
import org.springframework.data.repository.util.QueryExecutionConverters;
|
||||
import org.springframework.data.repository.util.ReactiveWrapperConverters;
|
||||
import org.springframework.data.repository.util.ReactiveWrappers;
|
||||
import org.springframework.data.util.ClassTypeInformation;
|
||||
import org.springframework.data.util.KotlinReflectionUtils;
|
||||
@@ -105,7 +106,14 @@ public abstract class AbstractRepositoryMetadata implements RepositoryMetadata {
|
||||
* @see org.springframework.data.repository.core.RepositoryMetadata#getReturnedDomainClass(java.lang.reflect.Method)
|
||||
*/
|
||||
public Class<?> getReturnedDomainClass(Method method) {
|
||||
return QueryExecutionConverters.unwrapWrapperTypes(getReturnType(method)).getType();
|
||||
|
||||
TypeInformation<?> returnType = getReturnType(method);
|
||||
|
||||
if (ReactiveWrapperConverters.supports(returnType.getType())) {
|
||||
return ReactiveWrapperConverters.unwrapWrapperTypes(returnType).getType();
|
||||
}
|
||||
|
||||
return QueryExecutionConverters.unwrapWrapperTypes(returnType).getType();
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.springframework.data.repository.core.RepositoryMetadata;
|
||||
import org.springframework.data.repository.core.support.MethodLookup.MethodPredicate;
|
||||
import org.springframework.data.repository.util.QueryExecutionConverters;
|
||||
import org.springframework.data.repository.util.ReactiveWrapperConverters;
|
||||
import org.springframework.data.repository.util.ReactiveWrappers;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
@@ -300,8 +301,7 @@ interface MethodLookups {
|
||||
|
||||
Assert.notNull(parameterType, "Parameter type must not be null!");
|
||||
|
||||
return QueryExecutionConverters.supports(parameterType)
|
||||
&& !QueryExecutionConverters.supportsUnwrapping(parameterType);
|
||||
return ReactiveWrappers.supports(parameterType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -168,10 +168,6 @@ public abstract class QueryExecutionConverters {
|
||||
}
|
||||
}
|
||||
|
||||
if (ReactiveWrappers.supports(type)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import org.springframework.core.convert.converter.ConverterFactory;
|
||||
import org.springframework.core.convert.support.ConfigurableConversionService;
|
||||
import org.springframework.core.convert.support.GenericConversionService;
|
||||
import org.springframework.data.repository.util.ReactiveWrappers.ReactiveLibrary;
|
||||
import org.springframework.data.util.TypeInformation;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
@@ -149,6 +150,21 @@ public abstract class ReactiveWrapperConverters {
|
||||
&& RegistryHolder.REACTIVE_ADAPTER_REGISTRY.getAdapter(type) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively unwraps well known wrapper types from the given {@link TypeInformation}.
|
||||
*
|
||||
* @param type must not be {@literal null}.
|
||||
* @return will never be {@literal null}.
|
||||
*/
|
||||
public static TypeInformation<?> unwrapWrapperTypes(TypeInformation<?> type) {
|
||||
|
||||
Assert.notNull(type, "type must not be null");
|
||||
|
||||
Class<?> rawType = type.getType();
|
||||
|
||||
return supports(rawType) ? unwrapWrapperTypes(type.getRequiredComponentType()) : type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts or adopts the given wrapper type to a target wrapper type.
|
||||
*
|
||||
|
||||
@@ -82,22 +82,6 @@ class QueryExecutionConvertersUnitTests {
|
||||
assertThat(QueryExecutionConverters.supports(io.vavr.control.Option.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void registersReactiveWrapperTypes() {
|
||||
|
||||
assertThat(QueryExecutionConverters.supports(Publisher.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(Mono.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(Flux.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(Single.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(Completable.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(Observable.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(io.reactivex.Single.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(io.reactivex.Maybe.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(io.reactivex.Completable.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(io.reactivex.Flowable.class)).isTrue();
|
||||
assertThat(QueryExecutionConverters.supports(io.reactivex.Observable.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test // DATACMNS-836
|
||||
void registersUnwrapperTypes() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user