From c0ebee6976a6bfa916c44da3d4c83d0633160435 Mon Sep 17 00:00:00 2001 From: SerLiunx-ctrl <17689543@qq.com> Date: Tue, 21 May 2024 02:27:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E6=9E=9A=E4=B8=BE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddns/config/AbstractConfiguration.java | 17 ++++++++++++-- .../serliunx/ddns/config/Configuration.java | 22 ++++++++++++++++++- .../com/serliunx/ddns/test/ContextTest.java | 2 +- .../com/serliunx/ddns/test/FactoryTest.java | 2 +- .../test/config/PropertiesConfigTest.java | 19 ++++++++++++++++ .../ddns/test/support/ClientTest.java | 2 +- 6 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 src/test/java/com/serliunx/ddns/test/config/PropertiesConfigTest.java diff --git a/src/main/java/com/serliunx/ddns/config/AbstractConfiguration.java b/src/main/java/com/serliunx/ddns/config/AbstractConfiguration.java index b506a70..a1de06b 100644 --- a/src/main/java/com/serliunx/ddns/config/AbstractConfiguration.java +++ b/src/main/java/com/serliunx/ddns/config/AbstractConfiguration.java @@ -86,8 +86,21 @@ public abstract class AbstractConfiguration implements Configuration { } @Override - public > Enum getEnum(Class clazz, String key) { - return null; + @SuppressWarnings({"rawtypes", "unchecked"}) + public T getEnum(Class clazz, String key) { + String rawValue = getString(key); + Assert.notNull(rawValue); + return (T)Enum.valueOf(clazz, rawValue); + } + + @Override + @SuppressWarnings({"rawtypes"}) + public T getEnum(Class clazz, String key, T defaultValue) { + T value = null; + try { + value = getEnum(clazz, key); + }catch (Exception ignored){} + return value == null ? defaultValue : value; } /** diff --git a/src/main/java/com/serliunx/ddns/config/Configuration.java b/src/main/java/com/serliunx/ddns/config/Configuration.java index 9b89f93..a814c0e 100644 --- a/src/main/java/com/serliunx/ddns/config/Configuration.java +++ b/src/main/java/com/serliunx/ddns/config/Configuration.java @@ -3,6 +3,7 @@ package com.serliunx.ddns.config; import com.serliunx.ddns.support.Refreshable; /** + * 配置信息逻辑定义 * @author SerLiunx * @since 1.0 */ @@ -68,5 +69,24 @@ public interface Configuration extends Refreshable { */ Boolean getBoolean(String key, Boolean defaultValue); - > Enum getEnum(Class clazz, String key); + /** + * 获取枚举值 + * @param clazz 枚举类 + * @param key 键 + * @return 枚举值 + * @param 枚举类型参数 + */ + @SuppressWarnings("rawtypes") + T getEnum(Class clazz, String key); + + /** + * 获取枚举值 + * @param clazz 枚举类 + * @param key 键 + * @param defaultValue 默认值 + * @return 枚举值 + * @param 枚举类型参数 + */ + @SuppressWarnings("rawtypes") + T getEnum(Class clazz, String key, T defaultValue); } diff --git a/src/test/java/com/serliunx/ddns/test/ContextTest.java b/src/test/java/com/serliunx/ddns/test/ContextTest.java index de56467..7b32afa 100644 --- a/src/test/java/com/serliunx/ddns/test/ContextTest.java +++ b/src/test/java/com/serliunx/ddns/test/ContextTest.java @@ -14,7 +14,7 @@ import org.junit.Test; public class ContextTest { @Test - public void testContext(){ + public void testContext() { GenericInstanceContext genericInstanceContext = new GenericInstanceContext(); genericInstanceContext.addListableInstanceFactory(new XmlFileInstanceFactory(SystemConstants.USER_INSTANCE_DIR)); diff --git a/src/test/java/com/serliunx/ddns/test/FactoryTest.java b/src/test/java/com/serliunx/ddns/test/FactoryTest.java index 21baca8..293d077 100644 --- a/src/test/java/com/serliunx/ddns/test/FactoryTest.java +++ b/src/test/java/com/serliunx/ddns/test/FactoryTest.java @@ -11,7 +11,7 @@ import org.junit.Test; public class FactoryTest { @Test - public void testYamlFileFactory(){ + public void testYamlFileFactory() { YamlFileInstanceFactory factory = new YamlFileInstanceFactory(SystemConstants.USER_INSTANCE_DIR); factory.refresh(); factory.getInstances().forEach(System.out::println); diff --git a/src/test/java/com/serliunx/ddns/test/config/PropertiesConfigTest.java b/src/test/java/com/serliunx/ddns/test/config/PropertiesConfigTest.java new file mode 100644 index 0000000..93bc35d --- /dev/null +++ b/src/test/java/com/serliunx/ddns/test/config/PropertiesConfigTest.java @@ -0,0 +1,19 @@ +package com.serliunx.ddns.test.config; + +import com.serliunx.ddns.config.Configuration; +import com.serliunx.ddns.config.PropertiesConfiguration; +import com.serliunx.ddns.constant.InstanceSource; +import com.serliunx.ddns.constant.SystemConstants; +import org.junit.Test; + +public class PropertiesConfigTest { + + @Test + public void test() { + Configuration configuration = new PropertiesConfiguration(SystemConstants.USER_SETTINGS_PROPERTIES_PATH); + configuration.refresh(); + + InstanceSource test = configuration.getEnum(InstanceSource.class, "test", InstanceSource.FILE_JSON); + System.out.println(test); + } +} diff --git a/src/test/java/com/serliunx/ddns/test/support/ClientTest.java b/src/test/java/com/serliunx/ddns/test/support/ClientTest.java index 136c888..161fdc7 100644 --- a/src/test/java/com/serliunx/ddns/test/support/ClientTest.java +++ b/src/test/java/com/serliunx/ddns/test/support/ClientTest.java @@ -10,7 +10,7 @@ import org.junit.Test; public class ClientTest { @Test - public void test(){ + public void test() { IPAddressClient client = IPAddressClient.instance; System.out.println(client.getIPAddress().getQuery()); }