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()); }