From a4a67b6e6329f2df9e255a346a394962bc65bd04 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 22 Sep 2020 14:51:00 +0200 Subject: [PATCH] DATACASS-806 - Add support for suspend repository query methods returning List. --- .../query/ReactiveCassandraQueryMethod.java | 4 ++-- .../ReactiveCassandraQueryMethodCoroutineUnitTests.kt | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java index cda610064..3d8fef663 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java @@ -50,8 +50,8 @@ public class ReactiveCassandraQueryMethod extends CassandraQueryMethod { super(method, metadata, projectionFactory, mappingContext); - this.isCollectionQuery = Lazy.of(() -> !(isPageQuery() || isSliceQuery()) - && ReactiveWrappers.isMultiValueType(metadata.getReturnType(method).getType())); + this.isCollectionQuery = Lazy.of(() -> (!(isPageQuery() || isSliceQuery()) + && ReactiveWrappers.isMultiValueType(metadata.getReturnType(method).getType())) || super.isCollectionQuery()); } /* diff --git a/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt b/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt index 36882821e..5f118e924 100644 --- a/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt +++ b/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt @@ -40,6 +40,8 @@ class ReactiveCassandraQueryMethodCoroutineUnitTests { suspend fun findSuspendAllByName(): Flow fun findAllByName(): Flow + + suspend fun findSuspendByName(): List } @Test // DATACASS-771 @@ -59,4 +61,13 @@ class ReactiveCassandraQueryMethodCoroutineUnitTests { assertThat(queryMethod.isCollectionQuery).isTrue() } + + @Test // DATACASS-806 + internal fun `should consider suspended methods returning List as collection queries`() { + + val method = PersonRepository::class.java.getMethod("findSuspendByName", Continuation::class.java) + val queryMethod = ReactiveCassandraQueryMethod(method, DefaultRepositoryMetadata(PersonRepository::class.java), projectionFactory, CassandraMappingContext()) + + assertThat(queryMethod.isCollectionQuery).isTrue() + } }