Refine PropertyResolver extensions null-safety

See gh-22687
This commit is contained in:
Sebastien Deleuze 2019-03-28 09:01:20 +01:00
parent bf9dea4254
commit 811f315440
2 changed files with 5 additions and 12 deletions

View File

@ -39,8 +39,8 @@ operator fun PropertyResolver.get(key: String) : String? = getProperty(key)
* @author Sebastien Deleuze * @author Sebastien Deleuze
* @since 5.1 * @since 5.1
*/ */
inline fun <reified T> PropertyResolver.getProperty(key: String) : T = inline fun <reified T> PropertyResolver.getProperty(key: String) : T? =
getProperty(key, T::class.java) as T getProperty(key, T::class.java)
/** /**
* Extension for [PropertyResolver.getRequiredProperty] providing a * Extension for [PropertyResolver.getRequiredProperty] providing a
@ -49,5 +49,5 @@ inline fun <reified T> PropertyResolver.getProperty(key: String) : T =
* @author Sebastien Deleuze * @author Sebastien Deleuze
* @since 5.1 * @since 5.1
*/ */
inline fun <reified T> PropertyResolver.getRequiredProperty(key: String) : T = inline fun <reified T: Any> PropertyResolver.getRequiredProperty(key: String) : T =
getRequiredProperty(key, T::class.java) getRequiredProperty(key, T::class.java)

View File

@ -40,21 +40,14 @@ class PropertyResolverExtensionsTests {
@Test @Test
fun `getProperty extension`() { fun `getProperty extension`() {
every { propertyResolver.getProperty("name", String::class.java) } returns "foo" every { propertyResolver.getProperty("name", String::class.java) } returns "foo"
propertyResolver.getProperty<String>("name") val name: String? = 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) } verify { propertyResolver.getProperty("name", String::class.java) }
} }
@Test @Test
fun `getRequiredProperty extension`() { fun `getRequiredProperty extension`() {
every { propertyResolver.getRequiredProperty("name", String::class.java) } returns "foo" every { propertyResolver.getRequiredProperty("name", String::class.java) } returns "foo"
propertyResolver.getRequiredProperty<String>("name") val name: String = propertyResolver.getRequiredProperty<String>("name")
verify { propertyResolver.getRequiredProperty("name", String::class.java) } verify { propertyResolver.getRequiredProperty("name", String::class.java) }
} }