Skip to content

Commit 250a467

Browse files
committed
Fix Reactive Parameter Handling.
Closes #1516.
1 parent fea7ed8 commit 250a467

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

spring-data-couchbase/src/main/java/org/springframework/data/couchbase/repository/query/AbstractCouchbaseQueryBase.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import reactor.core.publisher.Flux;
1919
import reactor.core.publisher.Mono;
2020

21+
import org.reactivestreams.Publisher;
2122
import org.springframework.data.couchbase.core.CouchbaseOperations;
2223
import org.springframework.data.couchbase.core.ExecutableFindByQueryOperation.ExecutableFindByQuery;
2324
import org.springframework.data.couchbase.core.query.Query;
@@ -108,15 +109,17 @@ EntityInstantiators getInstantiators() {
108109
* @see org.springframework.data.repository.query.RepositoryQuery#execute(java.lang.Object[])
109110
*/
110111
public Object execute(Object[] parameters) {
111-
112112
ReactiveCouchbaseParameterAccessor accessor = new ReactiveCouchbaseParameterAccessor(getQueryMethod(), parameters);
113-
114-
Object result = accessor.resolveParameters().map(this::executeDeferred);
115-
return ((Mono<Object>) result).block() ;
113+
return method.hasReactiveWrapperParameter() ? accessor.resolveParameters().flatMapMany(this::executeDeferred)
114+
: execute(accessor);
116115
}
117116

118-
private Object executeDeferred(ReactiveCouchbaseParameterAccessor parameterAccessor) {
119-
return execute(parameterAccessor);
117+
private Publisher<Object> executeDeferred(ReactiveCouchbaseParameterAccessor parameterAccessor/*Object[] parameters*/) {
118+
//ReactiveCouchbaseParameterAccessor parameterAccessor = new ReactiveCouchbaseParameterAccessor(method, parameters);
119+
if (getQueryMethod().isCollectionQuery()) {
120+
return Flux.defer(() -> (Publisher<Object>) execute(parameterAccessor));
121+
}
122+
return Mono.defer(() -> (Mono<Object>) execute(parameterAccessor));
120123
}
121124

122125
private Object execute(ParametersParameterAccessor parameterAccessor) {

0 commit comments

Comments
 (0)