Skip to content
This repository was archived by the owner on Nov 3, 2022. It is now read-only.

Commit 3605867

Browse files
committed
Register enum in type serialisers.
1 parent ac81850 commit 3605867

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/main/java/uk/co/drnaylor/quickstart/ModuleContainer.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
import com.google.common.base.Preconditions;
88
import com.google.common.collect.Maps;
99
import com.google.common.reflect.ClassPath;
10+
import com.google.common.reflect.TypeToken;
1011
import ninja.leaping.configurate.ConfigurationNode;
1112
import ninja.leaping.configurate.loader.ConfigurationLoader;
1213
import ninja.leaping.configurate.objectmapping.ObjectMappingException;
14+
import ninja.leaping.configurate.objectmapping.serialize.TypeSerializers;
1315
import uk.co.drnaylor.quickstart.annotations.ModuleData;
1416
import uk.co.drnaylor.quickstart.config.AbstractConfigAdapter;
17+
import uk.co.drnaylor.quickstart.config.LoadingStatusTypeSerializer;
1518
import uk.co.drnaylor.quickstart.constructors.ModuleConstructor;
1619
import uk.co.drnaylor.quickstart.constructors.SimpleModuleConstructor;
1720
import uk.co.drnaylor.quickstart.enums.ConstructionPhase;
@@ -397,7 +400,10 @@ public ModuleContainer build() throws QuickStartModuleDiscoveryException {
397400
classLoader = getClass().getClassLoader();
398401
}
399402

400-
Metadata.getStartupMessage().ifPresent(x -> Logger.getLogger("QuickStart").info(x));
403+
Metadata.getStartupMessage().ifPresent(x -> {
404+
Logger.getLogger("QuickStart").info(x);
405+
TypeSerializers.getDefaultSerializers().registerType(TypeToken.of(LoadingStatus.class), new LoadingStatusTypeSerializer());
406+
});
401407
return new ModuleContainer(configurationLoader, classLoader, packageToScan, constructor);
402408
}
403409
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* This file is part of QuickStart Module Loader, licensed under the MIT License (MIT). See the LICENSE.txt file
3+
* at the root of this project for more details.
4+
*/
5+
package uk.co.drnaylor.quickstart.config;
6+
7+
import com.google.common.reflect.TypeToken;
8+
import ninja.leaping.configurate.ConfigurationNode;
9+
import ninja.leaping.configurate.objectmapping.ObjectMappingException;
10+
import ninja.leaping.configurate.objectmapping.serialize.TypeSerializer;
11+
import uk.co.drnaylor.quickstart.enums.LoadingStatus;
12+
13+
public class LoadingStatusTypeSerializer implements TypeSerializer<LoadingStatus> {
14+
@Override
15+
public LoadingStatus deserialize(TypeToken<?> type, ConfigurationNode value) throws ObjectMappingException {
16+
try {
17+
return LoadingStatus.valueOf(value.getValue().toString().toUpperCase());
18+
} catch (IllegalArgumentException e) {
19+
return LoadingStatus.ENABLED;
20+
}
21+
}
22+
23+
@Override
24+
public void serialize(TypeToken<?> type, LoadingStatus obj, ConfigurationNode value) throws ObjectMappingException {
25+
value.setValue(obj.name().toLowerCase());
26+
}
27+
}

0 commit comments

Comments
 (0)