Browse Source

DATAMONGO-2630 - Add support for suspend repository query methods returning List<T>.

pull/888/head
Mark Paluch 5 years ago
parent
commit
91c39e2825
No known key found for this signature in database
GPG Key ID: 51A00FA751B91849
  1. 4
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java
  2. 11
      spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethodCoroutineUnitTests.kt

4
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java

@ -94,8 +94,8 @@ public class ReactiveMongoQueryMethod extends MongoQueryMethod { @@ -94,8 +94,8 @@ public class ReactiveMongoQueryMethod extends MongoQueryMethod {
}
this.method = method;
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()));
}
/*

11
spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethodCoroutineUnitTests.kt

@ -39,6 +39,8 @@ class ReactiveMongoQueryMethodCoroutineUnitTests { @@ -39,6 +39,8 @@ class ReactiveMongoQueryMethodCoroutineUnitTests {
suspend fun findSuspendAllByName(): Flow<Person>
fun findAllByName(): Flow<Person>
suspend fun findSuspendByName(): List<Person>
}
@Test // DATAMONGO-2562
@ -58,4 +60,13 @@ class ReactiveMongoQueryMethodCoroutineUnitTests { @@ -58,4 +60,13 @@ class ReactiveMongoQueryMethodCoroutineUnitTests {
assertThat(queryMethod.isCollectionQuery).isTrue()
}
@Test // DATAMONGO-2630
internal fun `should consider suspended methods returning List as collection queries`() {
val method = PersonRepository::class.java.getMethod("findSuspendByName", Continuation::class.java)
val queryMethod = ReactiveMongoQueryMethod(method, DefaultRepositoryMetadata(PersonRepository::class.java), projectionFactory, MongoMappingContext())
assertThat(queryMethod.isCollectionQuery).isTrue()
}
}

Loading…
Cancel
Save