All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.bitsensor.lib.jackson.protobuf.ProtobufSerializer Maven / Gradle / Ivy

The newest version!
package io.bitsensor.lib.jackson.protobuf;

import io.bitsensor.plugins.shaded.com.fasterxml.jackson.core.JsonGenerator;
import io.bitsensor.plugins.shaded.com.fasterxml.jackson.core.JsonParser;
import io.bitsensor.plugins.shaded.com.fasterxml.jackson.core.ObjectCodec;
import io.bitsensor.plugins.shaded.com.fasterxml.jackson.databind.SerializerProvider;
import io.bitsensor.plugins.shaded.com.fasterxml.jackson.databind.ser.std.StdSerializer;
import io.bitsensor.proto.shaded.io.bitsensor.proto.shaded.com.google.protobuf.MessageOrBuilder;
import io.bitsensor.proto.shaded.io.bitsensor.proto.shaded.com.google.protobuf.util.JsonFormat.Printer;

import java.io.IOException;

public class ProtobufSerializer extends StdSerializer {

    private final Printer printer;

    public ProtobufSerializer(Printer printer) {
        super(MessageOrBuilder.class);
        this.printer = printer;
    }

    @Override
    public void serialize(MessageOrBuilder message, JsonGenerator generator, SerializerProvider serializerProvider)
            throws IOException {
        String json = printer.print(message);

        ObjectCodec codec = generator.getCodec();
        JsonParser parser = codec.getFactory().createParser(json);
        generator.writeTree(codec.readTree(parser));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy