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

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

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

import io.bitsensor.plugins.shaded.com.fasterxml.jackson.databind.*;
import io.bitsensor.plugins.shaded.com.fasterxml.jackson.databind.deser.Deserializers;
import io.bitsensor.proto.shaded.io.bitsensor.proto.shaded.com.google.protobuf.Message;
import io.bitsensor.proto.shaded.io.bitsensor.proto.shaded.com.google.protobuf.util.JsonFormat;
import io.bitsensor.proto.shaded.io.bitsensor.proto.shaded.com.google.protobuf.util.JsonFormat.Parser;


public class ProtobufDeserializerFactory extends Deserializers.Base {
    private final Parser parser;

    public ProtobufDeserializerFactory() {
        this(JsonFormat.parser());
    }

    public ProtobufDeserializerFactory(Parser parser) {
        this.parser = parser;
    }

    @Override
    @SuppressWarnings("unchecked")
    public JsonDeserializer findBeanDeserializer(JavaType type, DeserializationConfig config, BeanDescription beanDesc)
            throws JsonMappingException {
        if (Message.class.isAssignableFrom(type.getRawClass())) {
            return getDeserializer((Class) type.getRawClass(), true);
        } else if (Message.Builder.class.isAssignableFrom(type.getRawClass())) {
            return getDeserializer((Class) type.getRawClass().getDeclaringClass(), false);
        } else {
            return super.findBeanDeserializer(type, config, beanDesc);
        }
    }

    @SuppressWarnings("unchecked")
    private  ProtobufDeserializer getDeserializer(Class messageType, boolean build)
            throws JsonMappingException {
        return new ProtobufDeserializer<>(messageType, build, parser);
    }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy