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

no.nav.common.kafka.consumer.util.deserializer.JsonValidationDeserializer Maven / Gradle / Ivy

package no.nav.common.kafka.consumer.util.deserializer;

import no.nav.common.json.JsonUtils;
import org.apache.kafka.common.serialization.Deserializer;
import org.everit.json.schema.Schema;
import org.json.JSONObject;

import java.nio.charset.StandardCharsets;

public class JsonValidationDeserializer implements Deserializer {

    private final Schema schema;

    private final Class dataClass;

    public JsonValidationDeserializer(Schema schema, Class dataClass) {
        this.schema = schema;
        this.dataClass = dataClass;
    }

    @Override
    public T deserialize(String topic, byte[] data) {
        if (data == null) {
            return null;
        }

        String jsonStr = new String(data, StandardCharsets.UTF_8);

        validateJson(jsonStr);

        return JsonUtils.fromJson(jsonStr, dataClass);
    }

    private void validateJson(String jsonStr) {
        JSONObject jsonObject = new JSONObject(jsonStr);
        schema.validate(jsonObject);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy