
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