public class ... {
private HashSet<Message> messages = new HashSet<>();
void init(ConfigurationLoader<CommentedConfigurationNode> localLoader) {
try {
TypeSerializerCollection serializers = TypeSerializers.getDefaultSerializers().newChild();
serializers.registerType(TypeToken.of(Message.class), new MessageSerializer());
ConfigurationOptions options = ConfigurationOptions.defaults()
.setSerializers(serializers);
CommentedConfigurationNode node = localLoader.load(options);
this.messages.add(new Message(1, 600, "msg1"));
this.messages.add(new Message(2, 600, "msg2"));
this.messages.add(new Message(3, 600, "msg3"));
this.messages.add(new Message(4, 600, "msg4"));
node.getNode("messages").setValue(this.messages);
localLoader.save(node);
} catch (IOException e) {
this.logger.warn("Error saving default config!", e);
}
}
}
public class MessageSerializer implements TypeSerializer<Message> {
public MessageSerializer() {
}
@Override
public Message deserialize(TypeToken<?> typeToken, ConfigurationNode value) throws ObjectMappingException {
int id = value.getNode("id").getInt();
int interval = value.getNode("interval").getInt();
String message = value.getNode("message").getString();
return new Message(id, interval, message);
}
@Override
public void serialize(TypeToken<?> typeToken, Message message, ConfigurationNode value) throws ObjectMappingException {
value.getNode("id").setValue(message.getId());
value.getNode("interval").setValue(message.getInterval());
value.getNode("message").setValue(message.getMessage());
}
}