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

se.hiq.oss.spring.nats.message.serde.json.NatsGsonMessageDeserializer Maven / Gradle / Ivy

The newest version!
package se.hiq.oss.spring.nats.message.serde.json;

import java.nio.charset.StandardCharsets;
import java.util.Optional;

import com.google.gson.Gson;
import io.nats.client.Message;

import se.hiq.oss.spring.nats.message.serde.NatsMessageDeserializer;
import se.hiq.oss.spring.nats.message.validation.MessageObjectValidator;

public class NatsGsonMessageDeserializer implements NatsMessageDeserializer {


    private Gson gson;
    private Class ofType;
    private Optional validator = Optional.empty();

    public NatsGsonMessageDeserializer(final Gson gson,
                                       final Class ofType) {
        this.gson = gson;
        this.ofType = ofType;
    }

    @Override
    public void setValidator(Optional validator) {
        this.validator = validator;
    }

    @Override
    public Object fromMessage(Message message) {
        String dataString = new String(message.getData(), StandardCharsets.UTF_8);
        Object object = gson.fromJson(dataString, ofType);
        validator.filter(v -> v.shouldValidate(ofType)).ifPresent(v -> v.validate(object));
        return object;
    }



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy