/를 \/로 escaping 하지 않도록 Jackson으로 변경

This commit is contained in:
curry772
2026-06-30 09:45:52 +09:00
parent e5fe9b853f
commit 1ba8de1e3b
@@ -11,7 +11,6 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set;
import javax.servlet.ServletInputStream; import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -48,6 +47,7 @@ import com.eactive.eai.common.exception.ExceptionUtil;
import com.eactive.eai.common.message.MessageType; import com.eactive.eai.common.message.MessageType;
import com.eactive.eai.common.util.CommonLib; import com.eactive.eai.common.util.CommonLib;
import com.eactive.eai.common.util.JSONUtils; import com.eactive.eai.common.util.JSONUtils;
import com.eactive.eai.common.util.JacksonUtil;
import com.eactive.eai.common.util.Logger; import com.eactive.eai.common.util.Logger;
import com.eactive.eai.common.util.TxFileLogger; import com.eactive.eai.common.util.TxFileLogger;
import com.eactive.eai.common.util.XMLUtils; import com.eactive.eai.common.util.XMLUtils;
@@ -62,6 +62,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
@Service @Service
public class DJBApiAdapterService extends HttpAdapterServiceSupport { public class DJBApiAdapterService extends HttpAdapterServiceSupport {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER); static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
static Logger siftLogger = Logger.getLogger(Logger.LOGGER_SIFT); static Logger siftLogger = Logger.getLogger(Logger.LOGGER_SIFT);
@@ -536,7 +538,7 @@ public class DJBApiAdapterService extends HttpAdapterServiceSupport {
private String applyHeaderGroupResponseHeaders(String adptGrpName, String adptName, Object resultMessage, Properties prop, private String applyHeaderGroupResponseHeaders(String adptGrpName, String adptName, Object resultMessage, Properties prop,
HttpServletRequest request, HttpServletResponse response, String adptMsgType) throws Exception { HttpServletRequest request, HttpServletResponse response, String adptMsgType) throws Exception {
// body headergroup -> http header 세팅 // body headergroup -> http header 세팅
String headerGroupName = prop.getProperty(ApiAdapterService.HEADER_GROUP); String headerGroupName = prop.getProperty(HEADER_GROUP);
if (StringUtils.isNotBlank(headerGroupName)) { if (StringUtils.isNotBlank(headerGroupName)) {
if (resultMessage instanceof Node) { if (resultMessage instanceof Node) {
@@ -552,34 +554,41 @@ public class DJBApiAdapterService extends HttpAdapterServiceSupport {
adptMsgType = MessageType.XML; adptMsgType = MessageType.XML;
} }
} }
if (MessageType.JSON.equals(adptMsgType)) {
JSONObject jsonObject = JSONUtils.parseJson(resultMessage);
JSONObject headerGroup = (JSONObject)jsonObject.get(headerGroupName);
if (headerGroup != null) {
Set<Map.Entry<String, Object>> fieldEntrySet = JSONUtils.getField(headerGroup);
for (Map.Entry<String, Object> fieldEntry : fieldEntrySet) {
logger.info("header group entry : {} , {}", fieldEntry.getKey(), fieldEntry.getValue());
if (fieldEntry.getValue() instanceof String) { if (MessageType.JSON.equals(adptMsgType)) {
if(fieldEntry.getKey().equalsIgnoreCase("content-type")) { JsonNode jsonNode = JacksonUtil.readTree(resultMessage, OBJECT_MAPPER); // 또는
logger.debug("set content-type {}: {}", fieldEntry.getKey(), fieldEntry.getValue()); // objectMapper.readTree(resultMessage)
response.setContentType((String) fieldEntry.getValue()); JsonNode headerGroup = jsonNode.get(headerGroupName);
} else {
logger.debug("add header {}: {}", fieldEntry.getKey(), fieldEntry.getValue()); if (headerGroup != null && !headerGroup.isNull()) {
response.addHeader(fieldEntry.getKey(), (String) fieldEntry.getValue()); Iterator<Map.Entry<String, JsonNode>> fieldIterator = headerGroup.fields();
while (fieldIterator.hasNext()) {
Map.Entry<String, JsonNode> fieldEntry = fieldIterator.next();
JsonNode valueNode = fieldEntry.getValue();
logger.info("header group entry : {} , {}", fieldEntry.getKey(), valueNode);
if (valueNode.isTextual()) {
String value = valueNode.asText();
if (fieldEntry.getKey().equalsIgnoreCase("content-type")) {
logger.debug("set content-type {}: {}", fieldEntry.getKey(), value);
response.setContentType(value);
} else {
logger.debug("add header {}: {}", fieldEntry.getKey(), value);
response.addHeader(fieldEntry.getKey(), value);
} }
} else { } else {
logger.info("fieldEntry value is not String. {}", fieldEntry.getValue()); logger.info("fieldEntry value is not String. {}", valueNode);
} }
} }
} else { } else {
logger.info("headerGroup is null"); logger.info("headerGroup is null");
} }
jsonObject.remove(headerGroupName); ((ObjectNode) jsonNode).remove(headerGroupName);
return jsonObject.toJSONString(); return jsonNode.toString();
} else if(MessageType.XML.equals(adptMsgType)) { } else if(MessageType.XML.equals(adptMsgType)) {
Document document = XMLUtils.convertXmlDocument(resultMessage); Document document = XMLUtils.convertXmlDocument(resultMessage);
if(document != null) { if(document != null) {