@@ -344,29 +344,24 @@ class HoconBeanDefinitionReader(registry: BeanDefinitionRegistry)
344344 }
345345 }
346346
347- private def readConditionals (list : ConfigList , config : ConfigObject ): ConfigObject = {
348- list.asScala.foldLeft( config)((conf, conditionalConf) => {
349- val props = getProps(conditionalConf. asInstanceOf [ ConfigObject ])
350- val condition = props.get( " condition " )
351- val newConfig = props(" beans" ).asInstanceOf [ ConfigObject ].get( " beans " )
352-
353- if (condition.map(_.unwrapped().asInstanceOf [Boolean ]).exists(identity)) {
354- newConfig.withFallback(conf). asInstanceOf [ ConfigObject ]
347+ private def readConditionals (config : Config ): Config = {
348+ if ( ! config.hasPath( " conditionals " )) config
349+ else config.getList( " conditionals " ).asScala.foldLeft(config)((currentConfig, conditionalObject) => {
350+ val props = getProps(conditionalObject.as[ ConfigObject ] )
351+ val newConfig = readConditionals( props(" beans" ).as[ Config ] )
352+
353+ if (props.get( " condition" ) .map(_.unwrapped().asInstanceOf [Boolean ]).exists(identity)) {
354+ newConfig.withFallback(currentConfig)
355355 } else {
356- conf
356+ currentConfig
357357 }
358358 })
359359 }
360360
361361 def loadBeanDefinitions (config : Config ): Int = {
362- var beans = if (config.hasPath(" beans" )) config.getObject(" beans" ) else ConfigFactory .empty.root
363-
364- if (config.hasPath(" conditionals" )) {
365- val conditionals : ConfigList = config.getList(" conditionals" )
366- beans = readConditionals(conditionals, beans)
367- }
368-
369- val aliases = if (config.hasPath(" aliases" )) config.getObject(" aliases" ) else ConfigFactory .empty.root
362+ val configWithConditionals = readConditionals(config)
363+ val beans = if (configWithConditionals.hasPath(" beans" )) configWithConditionals.getObject(" beans" ) else ConfigFactory .empty.root
364+ val aliases = if (configWithConditionals.hasPath(" aliases" )) configWithConditionals.getObject(" aliases" ) else ConfigFactory .empty.root
370365 val result = readBeans(beans)
371366 readAliases(aliases)
372367 result
0 commit comments