diff --git a/spring-core/src/main/kotlin/org/springframework/core/env/PropertyResolverExtensions.kt b/spring-core/src/main/kotlin/org/springframework/core/env/PropertyResolverExtensions.kt index e42228c717f..5ac96350dfa 100644 --- a/spring-core/src/main/kotlin/org/springframework/core/env/PropertyResolverExtensions.kt +++ b/spring-core/src/main/kotlin/org/springframework/core/env/PropertyResolverExtensions.kt @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,6 +42,16 @@ operator fun PropertyResolver.get(key: String) : String? = getProperty(key) inline fun PropertyResolver.getProperty(key: String) : T? = getProperty(key, T::class.java) +/** + * Extension for [PropertyResolver.getProperty] providing a `getProperty(...)` + * variant returning a non-nullable `Foo` with a default value. + * + * @author John Burns + * @since 6.1 + */ +inline fun PropertyResolver.getProperty(key: String, default: T) : T = + getProperty(key, T::class.java, default) + /** * Extension for [PropertyResolver.getRequiredProperty] providing a * `getRequiredProperty(...)` variant. diff --git a/spring-core/src/test/kotlin/org/springframework/core/env/PropertyResolverExtensionsKotlinTests.kt b/spring-core/src/test/kotlin/org/springframework/core/env/PropertyResolverExtensionsKotlinTests.kt index a3416a81daa..6b8178dff7c 100644 --- a/spring-core/src/test/kotlin/org/springframework/core/env/PropertyResolverExtensionsKotlinTests.kt +++ b/spring-core/src/test/kotlin/org/springframework/core/env/PropertyResolverExtensionsKotlinTests.kt @@ -19,6 +19,7 @@ package org.springframework.core.env import io.mockk.every import io.mockk.mockk import io.mockk.verify +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test /** @@ -44,6 +45,13 @@ class PropertyResolverExtensionsKotlinTests { verify { propertyResolver.getProperty("name", String::class.java) } } + @Test + fun `getProperty with default extension`() { + every { propertyResolver.getProperty("name", String::class.java, "default") } returns "default" + assertThat(propertyResolver.getProperty("name", "default")).isEqualTo("default") + verify { propertyResolver.getProperty("name", String::class.java, "default") } + } + @Test fun `getRequiredProperty extension`() { every { propertyResolver.getRequiredProperty("name", String::class.java) } returns "foo"