org.wikidata.query.rdf.tool.change.JsonDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tools Show documentation
Show all versions of tools Show documentation
Tools to sync Wikibase to RDF stores. Also contains overall integration tests that rely on everything else.
The newest version!
package org.wikidata.query.rdf.tool.change;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.wikidata.query.rdf.tool.MapperUtils.getObjectMapper;
import java.io.IOException;
import java.util.Map;
import org.apache.kafka.common.serialization.Deserializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* Deserializer for Kafka stream objects from JSON.
* This class allows to deserialize a family of related classes.
*
* @param Type to be deserialized into.
*/
public class JsonDeserializer implements Deserializer {
private static final Logger logger = LoggerFactory.getLogger(JsonDeserializer.class);
private final ObjectMapper mapper = getObjectMapper();
private final Map> topicToClass;
public JsonDeserializer(Map> topicToClass) {
this.topicToClass = topicToClass;
}
@Override
public void configure(Map configs, boolean isKey) {
// all configuration is through constructor
}
@Override
public T deserialize(String topic, byte[] data) {
if (data == null) return null;
try {
return mapper.readValue(data, topicToClass.get(topic));
} catch (IOException e) {
String dataString = new String(data, UTF_8);
logger.warn("Data in topic {} cannot be deserialized [{}].", topic, dataString, e);
return null;
}
}
@Override
public void close() {
// NOOP
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy