ConfigManager: Fix NPE when resetting configs with null default

This commit is contained in:
paymon123
2020-10-08 14:34:14 -07:00
committed by Tomas Slusny
parent 8438b42e15
commit 03566d6702
3 changed files with 32 additions and 2 deletions

View File

@@ -659,6 +659,7 @@ public class ConfigManager
return str;
}
@Nullable
static String objectToString(Object object)
{
if (object instanceof Color)
@@ -702,7 +703,7 @@ public class ConfigManager
{
return Long.toString(((Duration) object).toMillis());
}
return object.toString();
return object == null ? null : object.toString();
}
@Subscribe(priority = 100)

View File

@@ -118,6 +118,18 @@ public class ConfigManagerTest
TestConfig conf = manager.getConfig(TestConfig.class);
ConfigDescriptor descriptor = manager.getConfigDescriptor(conf);
Assert.assertEquals(1, descriptor.getItems().size());
Assert.assertEquals(2, descriptor.getItems().size());
}
@Test
public void testResetNullDefaultConfig()
{
TestConfig conf = manager.getConfig(TestConfig.class);
ConfigDescriptor descriptor = manager.getConfigDescriptor(conf);
conf.nullDefaultKey("new value");
manager.unsetConfiguration(descriptor.getGroup().value(), "nullDefaultKey");
manager.setDefaultConfiguration(conf, false);
Assert.assertNull(conf.nullDefaultKey());
}
}

View File

@@ -43,4 +43,21 @@ public interface TestConfig extends Config
description = "value"
)
void key(String key);
@ConfigItem(
keyName = "nullDefaultKey",
name = "Key Name",
description = "value"
)
void nullDefaultKey(String key);
@ConfigItem(
keyName = "nullDefaultKey",
name = "Key Name",
description = "value"
)
default String nullDefaultKey()
{
return null;
}
}