Adds Enum support to YamlConfiguration class (#41)

This commit is contained in:
Christian Koop 2022-04-27 23:34:16 +02:00
parent 8f15df3601
commit 41bd5c633a
No known key found for this signature in database
GPG Key ID: 89A8181384E010A3
2 changed files with 21 additions and 0 deletions

View File

@ -117,6 +117,8 @@ public class YamlConfiguration implements IConfiguration, HeaderCommentable, Nod
value = ((Float) value).doubleValue();
} else if (value instanceof Character) {
value = ((Character) value).toString();
} else if (value.getClass().isEnum()) {
value = ((Enum<?>) value).name();
} else if (value.getClass().isArray()) {
if (value instanceof int[]) {
value = Arrays.asList(ArrayUtils.toObject((int[]) value));

View File

@ -289,6 +289,16 @@ class YamlConfigurationTest {
assertEquals(3, primitivesList.get(2));
}
@Test
void testSetterWithEnumValue() {
final YamlConfiguration cfg = new YamlConfiguration();
assertNull(cfg.set("primitives.enum", TestEnum.ENUM_VALUE));
assertInstanceOf(String.class, cfg.get("primitives.enum"));
assertEquals(TestEnum.ENUM_VALUE, TestEnum.valueOf((String) cfg.get("primitives.enum")));
}
@Test
void testSetterWithBooleanArrayValue() {
final YamlConfiguration cfg = new YamlConfiguration();
@ -566,4 +576,13 @@ class YamlConfigurationTest {
assertEquals(expectedYaml, cfg.toYamlString());
}
private enum TestEnum {
ENUM_VALUE;
@Override
public String toString() {
return "#toString(): " + super.toString();
}
}
}