forked from D-Net/dnet-hadoop
32 lines
985 B
Java
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);
|
|
}
|
|
}
|
|
|
|
}
|