All Downloads are FREE. Search and download functionalities are using the official Maven repository.

internal.config.flex.MybatisFlexConfiguration.kt Maven / Gradle / Ivy

package com.mybatisflex.kotlin.ksp.internal.config.flex

import com.mybatisflex.kotlin.ksp.internal.config.Configuration

/**
 * mybatis-flex.config 中,专门配置 ksp 的相关配置。
 *
 * 这种配置的键均是 `processor` 以开头的。
 *
 * @author CloudPlayer
 */
internal sealed interface MybatisFlexConfiguration : Configuration {
    override val key: String

    override val value: T

    /**
     * 使用字符串进行初始化 [value] 的函数。在此函数中,你应当保证其值合理时在调用此方法后 value 会发生变化。
     * @param value 从配置文件中读取到的值。
     * @author CloudPlayer
     */
    fun initValue(value: String)

    companion object {
        /**
         * apt 设置中对应的所有配置类。这些类均是单例。ksp 对 apt 设置大部分均兼容。
         *
         * @author CloudPlayer
         */
        val configs by lazy {
            MybatisFlexConfiguration::class.sealedSubclasses.map {
                requireNotNull(it.objectInstance) {
                    "${it.qualifiedName} is not an object."
                }
            }
        }

        operator fun get(key: String): MybatisFlexConfiguration<*>? = configs.find {
            it.key == key
        }
    }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy