From ffa5e4b12b83a9f19bec0a754456ce32ed38c904 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 7 Jun 2022 21:10:21 -0400 Subject: [PATCH] Add support for string list configs --- src/main/java/com/falsepattern/lib/config/Config.java | 6 ++++++ .../com/falsepattern/lib/config/ConfigurationManager.java | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/com/falsepattern/lib/config/Config.java b/src/main/java/com/falsepattern/lib/config/Config.java index 8160114..4568778 100644 --- a/src/main/java/com/falsepattern/lib/config/Config.java +++ b/src/main/java/com/falsepattern/lib/config/Config.java @@ -87,6 +87,12 @@ public @interface Config { String value(); } + @Retention(RetentionPolicy.RUNTIME) + @Target(ElementType.FIELD) + @interface DefaultStringList { + String[] value(); + } + @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @interface Name { diff --git a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java index 2e89842..b44d9c1 100644 --- a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java +++ b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java @@ -172,6 +172,10 @@ public class ConfigurationManager { FalsePatternLib.getLog().warn("Invalid value " + value + " for enum configuration field " + field.getName() + " of type " + fieldClass.getName() + " in config class " + configClass.getName() + "! Using default value of " + defaultValue + "!"); field.set(null, defaultValue); } + } else if (fieldClass.isArray() && fieldClass.getComponentType().equals(String.class)) { + val defaultValue = Optional.ofNullable(field.getAnnotation(Config.DefaultStringList.class)).map(Config.DefaultStringList::value).orElse((String[])field.get(null)); + var value = rawConfig.getStringList(name, category, defaultValue, comment, null, langKey); + field.set(null, value); } else { throw new ConfigException("Illegal config field: " + field.getName() + " in " + configClass.getName() + ": Unsupported type " + fieldClass.getName() + "! Did you forget an @Ignore annotation?"); }