Skip to content

Commit c505aeb

Browse files
committed
Review fixes
1 parent 16291ce commit c505aeb

File tree

5 files changed

+27
-16
lines changed

5 files changed

+27
-16
lines changed

commons-spring/src/main/scala/com/avsystem/commons/spring/HoconBeanDefinitionReader.scala

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class HoconBeanDefinitionReader(registry: BeanDefinitionRegistry)
1717
extends AbstractBeanDefinitionReader(registry) {
1818

1919
import com.typesafe.config.ConfigValueType._
20+
import com.avsystem.commons.spring.HoconBeanDefinitionReader._
2021

2122
private implicit class ConfigValueExtensions(value: ConfigValue) {
2223
def as[T: HoconType] =
@@ -345,12 +346,12 @@ class HoconBeanDefinitionReader(registry: BeanDefinitionRegistry)
345346
}
346347

347348
private def readConditionals(config: Config): Config = {
348-
if (!config.hasPath("conditionals")) config
349-
else config.getList("conditionals").asScala.foldLeft(config.withoutPath("conditionals"))((currentConfig, conditionalObject) => {
349+
if (!config.hasPath(Conditionals)) config
350+
else config.getList(Conditionals).asScala.foldLeft(config.withoutPath(Conditionals))((currentConfig, conditionalObject) => {
350351
val props = getProps(conditionalObject.as[ConfigObject])
351352

352-
if (props.get("condition").map(_.unwrapped().asInstanceOf[Boolean]).exists(identity)) {
353-
readConditionals(props("beans").as[Config]).withFallback(currentConfig)
353+
if (props.get(Condition).exists(_.as[Boolean])) {
354+
readConditionals(props(Config).as[Config]).withFallback(currentConfig)
354355
} else {
355356
currentConfig
356357
}
@@ -359,8 +360,8 @@ class HoconBeanDefinitionReader(registry: BeanDefinitionRegistry)
359360

360361
def loadBeanDefinitions(resourceConfig: Config): Int = {
361362
val config = readConditionals(resourceConfig)
362-
val beans = if (config.hasPath("beans")) config.getObject("beans") else ConfigFactory.empty.root
363-
val aliases = if (config.hasPath("aliases")) config.getObject("aliases") else ConfigFactory.empty.root
363+
val beans = if (config.hasPath(Beans)) config.getObject(Beans) else ConfigFactory.empty.root
364+
val aliases = if (config.hasPath(Aliases)) config.getObject(Aliases) else ConfigFactory.empty.root
364365
val result = readBeans(beans)
365366
readAliases(aliases)
366367
result
@@ -369,3 +370,10 @@ class HoconBeanDefinitionReader(registry: BeanDefinitionRegistry)
369370
def loadBeanDefinitions(resource: Resource): Int =
370371
loadBeanDefinitions(ConfigFactory.parseURL(resource.getURL).resolve)
371372
}
373+
object HoconBeanDefinitionReader {
374+
val Conditionals = "conditionals"
375+
val Condition = "condition"
376+
val Config = "config"
377+
val Beans = "beans"
378+
val Aliases = "aliases"
379+
}

commons-spring/src/test/resources/conditionalsDisabled.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ featureFlag.enabled = false
33
beans.beanFromConditional = null
44

55
conditionals = [
6-
{condition: ${featureFlag.enabled}, beans: {include "conditionalInclude.conf"}},
6+
{condition: ${featureFlag.enabled}, config: {include "conditionalInclude.conf"}},
77
]

commons-spring/src/test/resources/conditionalsEnabled.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ featureFlag.enabled = true
33
beans.beanFromConditional = null
44

55
conditionals = [
6-
{condition: ${featureFlag.enabled}, beans: {include "conditionalInclude.conf"}},
6+
{condition: ${featureFlag.enabled}, config: {include "conditionalInclude.conf"}},
77
]

commons-spring/src/test/resources/conditionalsNested.conf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ beans {
77
}
88

99
conditionals = [
10-
{condition: ${featureFlag.enabled}, beans: {beans.testBean.int = 0}},
11-
{condition: ${featureFlag.enabled}, beans: {beans.testBean.int = 1}},
10+
{condition: ${featureFlag.enabled}, config: {beans.testBean.int = 0}},
11+
{condition: ${featureFlag.enabled}, config: {beans.testBean.int = 1}},
1212
{
13-
condition: ${featureFlag.enabled}, beans: {
13+
condition: ${featureFlag.enabled}, config: {
1414
conditionals = [
15-
{condition: true, beans: {beans.testBean.int = 2}}
15+
{condition: true, config: {beans.testBean.int = 2}}
1616
]
1717
}
1818
},
19-
{condition: false, beans: {beans.testBean.int = 3}},
19+
{condition: false, config: {beans.testBean.int = 3}},
2020
]

commons-spring/src/test/scala/com/avsystem/commons/spring/HoconBeanDefinitionReaderTest.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.avsystem.commons
22
package spring
33

44
import com.typesafe.config.{Config, ConfigFactory}
5+
import org.scalatest.BeforeAndAfterEach
56
import org.scalatest.funsuite.AnyFunSuite
67
import org.springframework.beans.factory.support.DefaultListableBeanFactory
78
import org.springframework.context.support.GenericApplicationContext
@@ -34,7 +35,7 @@ object ConditionalTestBean {
3435
var initializedCount = 0
3536
}
3637

37-
class HoconBeanDefinitionReaderTest extends AnyFunSuite {
38+
class HoconBeanDefinitionReaderTest extends AnyFunSuite with BeforeAndAfterEach {
3839
def createContext(resource: String): GenericApplicationContext = {
3940
val beanFactory = new DefaultListableBeanFactory
4041
beanFactory.setParameterNameDiscoverer(new StandardReflectionParameterNameDiscoverer)
@@ -49,6 +50,10 @@ class HoconBeanDefinitionReaderTest extends AnyFunSuite {
4950
ctx
5051
}
5152

53+
override def beforeEach(): Unit = {
54+
ConditionalTestBean.initializedCount = 0
55+
}
56+
5257
test("hocon bean definition reader should work") {
5358
val ctx = createContext("testBean.conf")
5459

@@ -93,15 +98,13 @@ class HoconBeanDefinitionReaderTest extends AnyFunSuite {
9398
}
9499

95100
test("file should be included with true condition") {
96-
ConditionalTestBean.initializedCount = 0
97101
val ctx = createContext("conditionalsEnabled.conf")
98102
val testBean = ctx.getBean("beanFromConditional", classOf[ConditionalTestBean])
99103
assert(testBean != null)
100104
assertResult(1)(ConditionalTestBean.initializedCount)
101105
}
102106

103107
test("file should not be included with false condition") {
104-
ConditionalTestBean.initializedCount = 0
105108
val ctx = createContext("conditionalsDisabled.conf")
106109
assert(!ctx.containsBean("beanFromConditional"))
107110
assertResult(0)(ConditionalTestBean.initializedCount)

0 commit comments

Comments
 (0)