package org.docbag.expression.evaluator.json;
import java.io.IOException;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.docbag.expression.evaluator.EvaluatorException;
import org.docbag.table.Table;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* JSONContentResolver helper class.
*
* @author Jakub Torbicki
*/
public class JSONResolverUtil {
private JSONResolverUtil() {
}
private static final Logger log = LoggerFactory.getLogger(JSONContentResolver.class);
private static final ObjectMapper mapper = new ObjectMapper();
static {
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
mapper.setVisibilityChecker(mapper.getSerializationConfig().getDefaultVisibilityChecker().withFieldVisibility(
JsonAutoDetect.Visibility.ANY).withGetterVisibility(JsonAutoDetect.Visibility.NONE).withSetterVisibility(
JsonAutoDetect.Visibility.NONE).withCreatorVisibility(JsonAutoDetect.Visibility.ANY));
}
public static JSONChart resolveChart(String json) {
try {
return mapper.readValue(json, JSONChart.class);
} catch (IOException e) {
log.error("Couldn't create Chart from: " + json, e.getLocalizedMessage(), e);
throw new EvaluatorException("Couldn't create Chart from: " + json, e);
}
}
public static Table resolveTable(String json) {
try {
return mapper.readValue(json, Table.class);
} catch (IOException e) {
log.error("Couldn't create Table from: " + json, e.getLocalizedMessage(), e);
throw new EvaluatorException("Couldn't create Table from: " + json, e);
}
}
}