Библиотека Protostuff работает не так, как ожидалось для полей ZonedDateTime

#java #protostuff

Вопрос:

Я пытаюсь использовать библиотеку protostuff для сериализации/десериализации в своем проекте. Я последовал за README.md как упоминалось в github.

Я столкнулся с одной проблемой, когда поля ZonedDateTime неправильно сериализованы/десериализованы.

Рассмотрим этот простой пример

 public class SomeClass {

    private ZonedDateTime dateTime;
    private String message;

    public SomeClass(ZonedDateTime dateTime, String message) {
        this.dateTime = dateTime;
        this.message = message;
    }

    public static void main(String[] args) {
        SomeClass serialized = new SomeClass(ZonedDateTime.now(), "some message");
        byte[] bytes = getProtoByteArray(serialized, SomeClass.class);
        SomeClass deSerialized = getObjectFromProtoByteArray(bytes, SomeClass.class);
        System.out.println(serialized.getDateTime()); // 2021-06-14T23:07:07.100 05:30[Asia/Calcutta]
        System.out.println(deSerialized.getDateTime()); // 2021-06-14T23:07:07.100null[Asia/Calcutta]
    }

    //serialization
    public static <T> byte[] getProtoByteArray(T message, Class<T> clazz) {
        LinkedBuffer buffer = LinkedBuffer.allocate(512);
        Schema<T> schema = RuntimeSchema.getSchema(clazz);
        // ser
        final byte[] protostuff;
        try {
            protostuff = ProtobufIOUtil.toByteArray(message, schema, buffer);
        } finally {
            buffer.clear();
        }
        return protostuff;
    }
    
    //deserialization
    public static <T> T getObjectFromProtoByteArray(byte[] data, Class<T> clazz) {
        Schema<T> schema = RuntimeSchema.getSchema(clazz);
        T parsed = schema.newMessage();
        ProtobufIOUtil.mergeFrom(data, parsed, schema);
        return parsed;
     }

    //getters setters
    }
 

Как вы можете видеть на выходных данных, десериализованный объект имеет поле смещения, равное нулю

 2021-06-14T23:07:07.100null[Asia/Calcutta]
 

Нужно ли нам что-то настраивать, чтобы устранить эту проблему ? Или в настоящее время библиотека не поддерживает тип ZonedDateTime ?