Elytrium / java-serializer

Java Library to (de-)serialize data in various formats (e.g. JSON, YAML)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot serialize/deserialize custom types into a collection

BoomEaro opened this issue · comments

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?