Skip to content

Afterburner breaks serialization of ObjectMapper #97

@zman0900

Description

@zman0900

JsonMapper and its parent class ObjectMapper are both supposed to be Serializable, but when AfterburnerModule is added, serialization is no longer possible.

For example, this code:

public class SerTest {
    public static void main(final String... args) throws Exception {
        final JsonMapper x = JsonMapper.builder()
                .addModule(new AfterburnerModule())
                .build();

        final ByteArrayOutputStream out = new ByteArrayOutputStream();
        new ObjectOutputStream(out)
                .writeObject(x);

        final ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(out.toByteArray()));
        final JsonMapper y = (JsonMapper) input.readObject();
    }
}

Results in exception:

Exception in thread "main" java.io.NotSerializableException: com.fasterxml.jackson.module.afterburner.deser.DeserializerModifier
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
	at SerTest.main(SerTest.java:13)

Without adding the AfterburnerModule to JsonMapper, this works as expected.

Jackson version = 2.11.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions