1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 10:38:19 +08:00

refactor(collection): Refactor builders of collection types (including List and Set).

This commit is contained in:
2025-09-27 02:09:42 +08:00
parent c86985017f
commit b17c157e18
30 changed files with 728 additions and 387 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
<parent>
<groupId>cc.carm.lib</groupId>
<artifactId>configured-parent</artifactId>
<version>4.1.8</version>
<version>4.2.0</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
@@ -1,29 +1,30 @@
package cc.carm.lib.configuration.kotlin.value
import cc.carm.lib.configuration.adapter.ValueType
import cc.carm.lib.configuration.builder.list.SourceListBuilder
import cc.carm.lib.configuration.builder.collection.SimpleCollectionCreator
import cc.carm.lib.configuration.value.standard.ConfiguredList
import kotlin.reflect.KClass
inline fun <S : Any, reified V> listFrom(
clazz: KClass<S>, block: (SourceListBuilder<S, V>.() -> Unit)
clazz: KClass<S>, block: (SimpleCollectionCreator.Source<S, V, List<V>, ConfiguredList<V>>.() -> Unit)
): ConfiguredList<V> {
return listFrom(clazz.java, block)
}
inline fun <S : Any, reified V> listFrom(
clazz: Class<S>, block: (SourceListBuilder<S, V>.() -> Unit)
clazz: Class<S>, block: (SimpleCollectionCreator.Source<S, V, List<V>, ConfiguredList<V>>.() -> Unit)
): ConfiguredList<V> {
return listFrom(ValueType.of(clazz), block)
}
inline fun <S : Any, reified V> listFrom(
valueType: ValueType<S>, block: (SourceListBuilder<S, V>.() -> Unit)
valueType: ValueType<S>, block: (SimpleCollectionCreator.Source<S, V, List<V>, ConfiguredList<V>>.() -> Unit)
): ConfiguredList<V> {
val configBuilder = ConfiguredList.builderOf(V::class.java)
val sourceValueBuilder: SourceListBuilder<S, V> = if (valueType.rawType == String::class.java) {
@Suppress("UNCHECKED_CAST")
configBuilder.fromString() as SourceListBuilder<S, V>
} else configBuilder.from(valueType)
val sourceValueBuilder: SimpleCollectionCreator.Source<S, V, List<V>, ConfiguredList<V>> =
if (valueType.rawType == String::class.java) {
@Suppress("UNCHECKED_CAST")
configBuilder.fromString() as SimpleCollectionCreator.Source<S, V, List<V>, ConfiguredList<V>>
} else configBuilder.from(valueType)
return sourceValueBuilder.also(block).build()
}
}