diff --git a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenter.kt b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenter.kt index 0ad0d108..c515572c 100644 --- a/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenter.kt +++ b/Partner-Framework/src/main/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenter.kt @@ -74,11 +74,12 @@ object ConfigCenter : AutoCloseable { log.info("ConfigCenter 文件监听注册完毕: {}", paths.configDir) } + @Suppress("UNCHECKED_CAST") fun initAll() { registrations.forEach { (path, registration) -> try { val config = loadConfig(path, registration) - registration.init(config) + (registration as ConfigRegistration).init(config) } catch (e: Exception) { if (registration.configRequired()) { throw AgentLaunchFailedException("Failed to init config", e) @@ -118,12 +119,13 @@ object ConfigCenter : AutoCloseable { } } + @Suppress("UNCHECKED_CAST") private fun reloadIfRegistered(file: Path) { val relativePath = toRelativeConfigPath(file) ?: return val registration = registrations[relativePath] ?: return try { val config = loadConfig(file, registration) - notifyReload(registration, config) + (registration as ConfigRegistration).init(config) } catch (e: Exception) { log.error("Config reload failed: {}", relativePath, e) } @@ -174,7 +176,7 @@ object ConfigCenter : AutoCloseable { abstract class Config interface Configurable { - fun declare(): Map> + fun declare(): Map> fun register() { ConfigCenter.register(this) } diff --git a/Partner-Framework/src/test/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenterTest.java b/Partner-Framework/src/test/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenterTest.java index 84ae27b7..98033026 100644 --- a/Partner-Framework/src/test/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenterTest.java +++ b/Partner-Framework/src/test/java/work/slhaf/partner/api/agent/runtime/config/ConfigCenterTest.java @@ -251,5 +251,10 @@ class ConfigCenterTest { TestConfig lastConfig() { return lastConfig.get(); } + + @Override + public boolean configRequired() { + return true; + } } }