When serializing an object containing a field of type Throwable I get
one.microstream.persistence.exceptions.PersistenceExceptionTypeNotPersistable: Type not persistable: "class java.lang.Throwable".
Using the Serializer or TypedSerializer like this:
class ObjectToSerialize {
Throwable throwable;
}
public class Main {
public static void main(String[] args) {
ObjectToSerialize objectToSerialize = new ObjectToSerialize();
final SerializerFoundation<?> foundation = SerializerFoundation.New()
.registerEntityTypes(ObjectToSerialize.class);
final Serializer<byte[]> serializer = TypedSerializer.Bytes(foundation);
byte[] data = serializer.serialize(objectToSerialize);
ObjectToSerialize restored = serializer.deserialize(data);
}
}
The result I get is this:
Exception in thread "main" one.microstream.persistence.exceptions.PersistenceExceptionTypeNotPersistable: Type not persistable: "class java.lang.Throwable".
at one.microstream.persistence.binary.internal.BinaryHandlerUnpersistable.guaranteeSubTypeInstanceViablity(BinaryHandlerUnpersistable.java:98)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.lambda$recursiveEnsureTypeHandlers$0(PersistenceTypeHandlerManager.java:278)
at one.microstream.persistence.binary.internal.AbstractBinaryHandlerReflective.iterateMemberTypes(AbstractBinaryHandlerReflective.java:591)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.recursiveEnsureTypeHandlers(PersistenceTypeHandlerManager.java:271)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.registerTypeHandler(PersistenceTypeHandlerManager.java:639)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.internalEnsureTypeHandler(PersistenceTypeHandlerManager.java:616)
at one.microstream.persistence.types.PersistenceTypeHandlerManager$Default.ensureTypeHandler(PersistenceTypeHandlerManager.java:384)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at one.microstream.persistence.binary.util.SerializerFoundation$Default.createPersistenceManager(SerializerFoundation.java:211)
at one.microstream.persistence.binary.util.TypedSerializer$Default.initialize(TypedSerializer.java:372)
at one.microstream.persistence.binary.util.TypedSerializer$Default.<init>(TypedSerializer.java:262)
at one.microstream.persistence.binary.util.TypedSerializer.New(TypedSerializer.java:145)
at one.microstream.persistence.binary.util.TypedSerializer.Bytes(TypedSerializer.java:117)
at com.testing.Main.main(Main.java:19)
I have seen this but in my case I need to do serialization not storing, maybe I'm wrong?
How do I serialize an object containing Throwable? If you can please point me to documentation or an example explaining how to do this. Many Thanks!