Infer Kotlin null-safety from type variables

This commit removes the constraint from type variables in
PropertyResolver, JdbcOperations and RestOperations
Kotlin extensions in order to get null-safety inferred
from the type declared by the user.

Closes gh-22687
This commit is contained in:
Sebastien Deleuze
2019-03-27 08:50:42 +01:00
parent 68a529b915
commit cbb5a78aa0
6 changed files with 175 additions and 124 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.core.env
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import org.junit.Test
@@ -27,22 +28,32 @@ import org.junit.Test
*/
class PropertyResolverExtensionsTests {
val propertyResolver = mockk<PropertyResolver>(relaxed = true)
val propertyResolver = mockk<PropertyResolver>()
@Test
fun `get operator`() {
every { propertyResolver.getProperty("name") } returns "foo"
propertyResolver["name"]
verify { propertyResolver.getProperty("name") }
}
@Test
fun `getProperty extension`() {
every { propertyResolver.getProperty("name", String::class.java) } returns "foo"
propertyResolver.getProperty<String>("name")
verify { propertyResolver.getProperty("name", String::class.java) }
}
@Test
fun `getProperty extension with nullable type`() {
every { propertyResolver.getProperty("name", String::class.java) } returns null
propertyResolver.getProperty<String?>("name")
verify { propertyResolver.getProperty("name", String::class.java) }
}
@Test
fun `getRequiredProperty extension`() {
every { propertyResolver.getRequiredProperty("name", String::class.java) } returns "foo"
propertyResolver.getRequiredProperty<String>("name")
verify { propertyResolver.getRequiredProperty("name", String::class.java) }
}