Cannot serialize/deserialize custom types into a collection
BoomEaro opened this issue · comments
Valentine commented
I use the following configuration:
public class TestSettings extends YamlSerializable {
@Transient
private static final SerializerConfig CONFIG = new SerializerConfig.Builder()
.setCommentValueIndent(1)
.registerSerializer(new TestSerializer())
.build();
@Transient
public static final TestSettings IMP = new TestSettings();
public TestSettings() {
super(CONFIG);
}
public TEST_SECTION TEST_SECTION = new TEST_SECTION();
public static class TEST_SECTION {
public TestData DATA = new TestData(Collections.singletonList("test"));
}
}
Custom type for serialization:
@NoArgsConstructor
@AllArgsConstructor
@Data
public class TestData {
private List<String> originalList = new ArrayList<>();
}
Custom serialization class. From TestData to List with String type.
public class TestSerializer extends ClassSerializer<TestData, List<String>> {
@Override
public List<String> serialize(TestData from) {
return from.getOriginalList();
}
@Override
public TestData deserialize(List<String> from) {
return new TestData(from);
}
}
Exception when attempting to load a configuration:
[16:28:11] [Thread-1/ERROR]: Exception in thread "Thread-1" java.lang.IllegalArgumentException: Invalid type was provided: E
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readByType(AbstractReader.java:250)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readByType(AbstractReader.java:195)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.YamlReader.readByType0(YamlReader.java:581)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.YamlReader.readCollectionFromMarker(YamlReader.java:557)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.YamlReader.readCollection(YamlReader.java:261)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readList(AbstractReader.java:379)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readCollectionByType(AbstractReader.java:315)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readByType(AbstractReader.java:215)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readAndDeserializeByType(AbstractReader.java:174)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readNode(AbstractReader.java:135)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.YamlReader.readSerializableObject(YamlReader.java:136)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readByType(AbstractReader.java:237)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readAndDeserializeByType(AbstractReader.java:174)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readNode(AbstractReader.java:135)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.YamlReader.readSerializableObject(YamlReader.java:136)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.reader.AbstractReader.readSerializableObject(AbstractReader.java:76)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.object.AbstractSerializable.load(AbstractSerializable.java:93)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.object.AbstractSerializable.load(AbstractSerializable.java:82)
[16:28:11] [Thread-1/ERROR]: at net.elytrium.serializer.language.object.AbstractSerializable.reload(AbstractSerializable.java:64)
Is this a serializer bug or is this behavior simply not supported at this time?