Polish BeanDefinitionDsl

Issue: SPR-16412
This commit is contained in:
Sebastien Deleuze 2018-05-29 09:33:29 +02:00
parent 406f6ec74d
commit be416ef9c4
1 changed files with 5 additions and 12 deletions

View File

@ -61,11 +61,7 @@ import java.util.function.Supplier
* @see BeanDefinitionDsl
* @since 5.0
*/
fun beans(init: BeanDefinitionDsl.() -> Unit): BeanDefinitionDsl {
val beans = BeanDefinitionDsl()
beans.init = init
return beans
}
fun beans(init: BeanDefinitionDsl.() -> Unit) = BeanDefinitionDsl(init)
/**
* Class implementing functional bean definition Kotlin DSL.
@ -76,14 +72,13 @@ fun beans(init: BeanDefinitionDsl.() -> Unit): BeanDefinitionDsl {
* @author Sebastien Deleuze
* @since 5.0
*/
open class BeanDefinitionDsl(private val condition: (ConfigurableEnvironment) -> Boolean = { true })
open class BeanDefinitionDsl(private val init: BeanDefinitionDsl.() -> Unit,
private val condition: (ConfigurableEnvironment) -> Boolean = { true })
: ApplicationContextInitializer<GenericApplicationContext> {
@PublishedApi
internal val children = arrayListOf<BeanDefinitionDsl>()
internal lateinit var init: BeanDefinitionDsl.() -> Unit
/**
* Access to the context for advanced use-cases.
* @since 5.1
@ -238,8 +233,7 @@ open class BeanDefinitionDsl(private val condition: (ConfigurableEnvironment) ->
* specified profile is active.
*/
fun profile(profile: String, init: BeanDefinitionDsl.() -> Unit) {
val beans = BeanDefinitionDsl({ it.activeProfiles.contains(profile) })
beans.init = init
val beans = BeanDefinitionDsl(init, { it.activeProfiles.contains(profile) })
children.add(beans)
}
@ -251,8 +245,7 @@ open class BeanDefinitionDsl(private val condition: (ConfigurableEnvironment) ->
*/
fun environment(condition: ConfigurableEnvironment.() -> Boolean,
init: BeanDefinitionDsl.() -> Unit) {
val beans = BeanDefinitionDsl(condition::invoke)
beans.init = init
val beans = BeanDefinitionDsl(init, condition::invoke)
children.add(beans)
}