Browse Source

DATAMONGO-2661 - Handle nullable types for KPropertyPath.

Original pull request: #894.
pull/895/head
Yoann de Martino 5 years ago committed by Mark Paluch
parent
commit
c8b64601db
No known key found for this signature in database
GPG Key ID: 4406B84C1661DCD1
  1. 5
      spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/query/KPropertyPath.kt
  2. 9
      spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/query/KPropertyPathTests.kt

5
spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/query/KPropertyPath.kt

@ -27,7 +27,7 @@ import kotlin.reflect.KProperty1 @@ -27,7 +27,7 @@ import kotlin.reflect.KProperty1
* @since 2.2
*/
class KPropertyPath<T, U>(
internal val parent: KProperty<U>,
internal val parent: KProperty<U?>,
internal val child: KProperty1<U, T>
) : KProperty<T> by child
@ -52,7 +52,8 @@ internal fun asString(property: KProperty<*>): String { @@ -52,7 +52,8 @@ internal fun asString(property: KProperty<*>): String {
* Book::author / Author::name isEqualTo "Herman Melville"
* ```
* @author Tjeu Kayim
* @author Yoann de Martino
* @since 2.2
*/
operator fun <T, U> KProperty<T>.div(other: KProperty1<T, U>) =
operator fun <T, U> KProperty<T?>.div(other: KProperty1<T, U>) =
KPropertyPath(this, other)

9
spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/query/KPropertyPathTests.kt

@ -93,6 +93,15 @@ class KPropertyPathTests { @@ -93,6 +93,15 @@ class KPropertyPathTests {
assertThat(property).isEqualTo("entity.book.author.name")
}
@Test
fun `Convert nullable KProperty to field name`() {
class Cat(val name: String)
class Owner(val cat: Cat?)
val property = asString(Owner::cat / Cat::name)
assertThat(property).isEqualTo("cat.name")
}
class Book(val title: String, val author: Author)
class Author(val name: String)
}

Loading…
Cancel
Save