package gov.nysenate.openleg.util; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.guava.GuavaModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * OutputUtils serves as a simple utility class to convert Objects to string representations. * This is primarily useful during development and debugging. */ public abstract class OutputUtils { private static final Logger logger = LoggerFactory.getLogger(OutputUtils.class); private static ObjectMapper jsonMapper = new ObjectMapper(); static { jsonMapper.enable(SerializationFeature.INDENT_OUTPUT); jsonMapper.registerModule(new GuavaModule()); jsonMapper.registerModule(new JavaTimeModule()); jsonMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); } public static ObjectMapper getJsonMapper() { return jsonMapper; } /** * Given an object, this method will attempt to serialize it into JSON. * @param object Object * @return String - Json or empty string if failed. */ public static String toJson(Object object) { try { return jsonMapper.writeValueAsString(object); } catch(JsonGenerationException ex){ logger.error("Failed to generate json: " + ex.getMessage()); } catch(JsonMappingException ex){ logger.error("Failed to map json: " + ex.getMessage()); } catch(Exception ex){ logger.error("ObjectMapper exception: " + ex.getMessage()); } return ""; } }