Skip to content

Commit 1575126

Browse files
author
Denis Zhdanov
committed
configured ConfigProviderFactory in spring context
1 parent 9c9779c commit 1575126

File tree

2 files changed

+77
-46
lines changed

2 files changed

+77
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package tech.harmonysoft.oss.configurario.client.configuration
2+
3+
import org.springframework.context.annotation.Bean
4+
import org.springframework.context.annotation.Configuration
5+
import tech.harmonysoft.oss.configurario.client.context.ContextProvider
6+
import tech.harmonysoft.oss.configurario.client.event.ConfigEventManager
7+
import tech.harmonysoft.oss.configurario.client.factory.ConfigProviderFactory
8+
import tech.harmonysoft.oss.configurario.client.factory.impl.KotlinConfigProviderFactory
9+
10+
@Configuration
11+
class ConfigurarioConfiguration {
12+
13+
@Bean
14+
fun configProviderFactory(
15+
contextProvider: ContextProvider,
16+
eventManger: ConfigEventManager
17+
): ConfigProviderFactory {
18+
return KotlinConfigProviderFactory(contextProvider, eventManger)
19+
}
20+
}

configurario-client-kotlin/src/main/kotlin/tech/harmonysoft/oss/configurario/client/factory/impl/ParameterValueRetriever.kt

+57-46
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,14 @@ class ParameterValueRetriever(val parameter: KParameter) {
4343
)
4444

4545
val propertyName = context.getRegularPropertyName(prefix, name)
46-
return doRetrieve(propertyName = propertyName,
47-
creator = creator,
48-
context = context,
49-
type = parameter.type,
50-
klass = klass,
51-
optional = parameter.isOptional || parameter.type.isMarkedNullable)
46+
return doRetrieve(
47+
propertyName = propertyName,
48+
creator = creator,
49+
context = context,
50+
type = parameter.type,
51+
klass = klass,
52+
optional = parameter.isOptional || parameter.type.isMarkedNullable
53+
)
5254
}
5355

5456
private fun doRetrieve(
@@ -98,23 +100,27 @@ class ParameterValueRetriever(val parameter: KParameter) {
98100
context: Context
99101
): Result<Any?, String>? {
100102
return when {
101-
isMapLike(propertyName, context) -> retrieveMap(propertyName = propertyName,
102-
creator = creator,
103-
context = context,
104-
keyType = STRING_TYPE,
105-
keyClass = String::class,
106-
valueType = ANY_TYPE,
107-
valueClass = Any::class,
108-
optional = false,
109-
nullable = false)
110-
isCollectionLike(propertyName, context) -> retrieveCollection(collectionClass = List::class,
111-
propertyName = propertyName,
112-
creator = creator,
113-
context = context,
114-
valueType = ANY_TYPE,
115-
valueClass = Any::class,
116-
optional = false,
117-
nullable = false)
103+
isMapLike(propertyName, context) -> retrieveMap(
104+
propertyName = propertyName,
105+
creator = creator,
106+
context = context,
107+
keyType = STRING_TYPE,
108+
keyClass = String::class,
109+
valueType = ANY_TYPE,
110+
valueClass = Any::class,
111+
optional = false,
112+
nullable = false
113+
)
114+
isCollectionLike(propertyName, context) -> retrieveCollection(
115+
collectionClass = List::class,
116+
propertyName = propertyName,
117+
creator = creator,
118+
context = context,
119+
valueType = ANY_TYPE,
120+
valueClass = Any::class,
121+
optional = false,
122+
nullable = false
123+
)
118124
else -> retrieveSimpleValue(propertyName, Any::class, context)
119125
}
120126
}
@@ -199,14 +205,16 @@ class ParameterValueRetriever(val parameter: KParameter) {
199205
"can't derive type parameter class for property '$propertyName' of type ${parameter.type}"
200206
)
201207

202-
return retrieveCollection(collectionClass = collectionClass,
203-
propertyName = propertyName,
204-
creator = creator,
205-
context = context,
206-
valueType = type,
207-
valueClass = typeClass,
208-
optional = parameter.isOptional,
209-
nullable = parameter.type.isMarkedNullable)
208+
return retrieveCollection(
209+
collectionClass = collectionClass,
210+
propertyName = propertyName,
211+
creator = creator,
212+
context = context,
213+
valueType = type,
214+
valueClass = typeClass,
215+
optional = parameter.isOptional,
216+
nullable = parameter.type.isMarkedNullable
217+
)
210218
}
211219

212220
private fun retrieveCollection(
@@ -287,15 +295,17 @@ class ParameterValueRetriever(val parameter: KParameter) {
287295
val valueClass = valueType.classifier as? KClass<*> ?: throw IllegalArgumentException(
288296
"Failed instantiating a Map property '$propertyName' - can't derive value class for $parameter"
289297
)
290-
return retrieveMap(propertyName = propertyName,
291-
creator = creator,
292-
context = context,
293-
keyType = keyType,
294-
keyClass = keyClass,
295-
valueType = valueType,
296-
valueClass = valueClass,
297-
optional = parameter.isOptional,
298-
nullable = parameter.type.isMarkedNullable)
298+
return retrieveMap(
299+
propertyName = propertyName,
300+
creator = creator,
301+
context = context,
302+
keyType = keyType,
303+
keyClass = keyClass,
304+
valueType = valueType,
305+
valueClass = valueClass,
306+
optional = parameter.isOptional,
307+
nullable = parameter.type.isMarkedNullable
308+
)
299309
}
300310

301311
private fun retrieveMap(
@@ -313,12 +323,13 @@ class ParameterValueRetriever(val parameter: KParameter) {
313323
for (key in context.getMapKeys(propertyName, keyType)) {
314324
val valuePropertyName = context.getMapValuePropertyName(propertyName, key)
315325
try {
316-
doRetrieve(propertyName = valuePropertyName,
317-
creator = creator,
318-
context = context,
319-
type = valueType,
320-
klass = valueClass,
321-
optional = false
326+
doRetrieve(
327+
propertyName = valuePropertyName,
328+
creator = creator,
329+
context = context,
330+
type = valueType,
331+
klass = valueClass,
332+
optional = false
322333
)?.takeIf {
323334
it.success
324335
}?.let {

0 commit comments

Comments
 (0)