Use hapi object mapper

This commit is contained in:
Brenin Rhodes
2023-10-03 12:28:56 -06:00
parent f33dd6f093
commit 3b79897ff9

View File

@@ -13,8 +13,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable; import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.beans.factory.annotation.Qualifier;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
@@ -27,6 +27,8 @@ import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServiceRequestJson;
import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServiceResponseJson; import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServiceResponseJson;
import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServicesJson; import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServicesJson;
import static ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig.CDS_HOOKS_OBJECT_MAPPER_FACTORY;
@Configurable @Configurable
public class CdsHooksServlet extends HttpServlet { public class CdsHooksServlet extends HttpServlet {
private static final Logger logger = LoggerFactory.getLogger(CdsHooksServlet.class); private static final Logger logger = LoggerFactory.getLogger(CdsHooksServlet.class);
@@ -38,8 +40,9 @@ public class CdsHooksServlet extends HttpServlet {
ICdsServiceRegistry cdsServiceRegistry; ICdsServiceRegistry cdsServiceRegistry;
@Autowired @Autowired
RestfulServer restfulServer; RestfulServer restfulServer;
@Autowired
// private final ServletRequestDetails requestDetails = new ServletRequestDetails(); @Qualifier(CDS_HOOKS_OBJECT_MAPPER_FACTORY)
ObjectMapper objectMapper;
// CORS Pre-flight // CORS Pre-flight
@Override @Override
@@ -74,18 +77,16 @@ public class CdsHooksServlet extends HttpServlet {
} }
logger.info(request.getRequestURI()); logger.info(request.getRequestURI());
String service = request.getPathInfo().replace("/", ""); String service = request.getPathInfo().replace("/", "");
ObjectMapper mapper = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
String requestJson = request.getReader().lines().collect(Collectors.joining()); String requestJson = request.getReader().lines().collect(Collectors.joining());
CdsServiceRequestJson cdsHooksRequest = mapper.readValue(requestJson, CdsServiceRequestJson.class); CdsServiceRequestJson cdsHooksRequest = objectMapper.readValue(requestJson, CdsServiceRequestJson.class);
logRequestInfo(cdsHooksRequest, requestJson); logRequestInfo(cdsHooksRequest, requestJson);
CdsServiceResponseJson serviceResponseJson = cdsServiceRegistry.callService(service, cdsHooksRequest); CdsServiceResponseJson serviceResponseJson = cdsServiceRegistry.callService(service, cdsHooksRequest);
// Using GSON pretty print format as Jackson's is ugly // Using GSON pretty print format as Jackson's is ugly
String jsonResponse = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create() String jsonResponse = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create()
.toJson(JsonParser.parseString(mapper.writeValueAsString(serviceResponseJson))); .toJson(JsonParser.parseString(objectMapper.writeValueAsString(serviceResponseJson)));
logger.info(jsonResponse); logger.info(jsonResponse);
response.setContentType("text/json;charset=UTF-8"); response.setContentType("text/json;charset=UTF-8");
response.getWriter().println(jsonResponse); response.getWriter().println(jsonResponse);