dnet-hadoop/dhp-workflows/dhp-graph-provision-scholex.../src/main/java/eu/dnetlib/dhp/export/TolerantAtomicActionDeseria...

32 lines
985 B
Java

package eu.dnetlib.dhp.export;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import eu.dnetlib.dhp.schema.action.AtomicActionDeserializer;
import eu.dnetlib.dhp.schema.oaf.Oaf;
public class TolerantAtomicActionDeserializer extends AtomicActionDeserializer {
public TolerantAtomicActionDeserializer() {
}
@Override
public AtomicActionSandro deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
JsonNode node = (JsonNode) jp.getCodec().readTree(jp);
String classTag = node.get("clazz").asText();
JsonNode payload = node.get("payload");
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
try {
Class<?> clazz = Class.forName(classTag);
return new AtomicActionSandro(clazz, (Oaf) mapper.readValue(payload.toString(), clazz));
} catch (ClassNotFoundException var8) {
throw new IOException(var8);
}
}
}