/를 \/로 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.Map;
import java.util.Properties;
import java.util.Set;
import javax.servlet.ServletInputStream;
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.util.CommonLib;
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.TxFileLogger;
import com.eactive.eai.common.util.XMLUtils;
@@ -62,6 +62,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
@Service
public class DJBApiAdapterService extends HttpAdapterServiceSupport {
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
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,
HttpServletRequest request, HttpServletResponse response, String adptMsgType) throws Exception {
// body headergroup -> http header 세팅
String headerGroupName = prop.getProperty(ApiAdapterService.HEADER_GROUP);
String headerGroupName = prop.getProperty(HEADER_GROUP);
if (StringUtils.isNotBlank(headerGroupName)) {
if (resultMessage instanceof Node) {
@@ -552,34 +554,41 @@ public class DJBApiAdapterService extends HttpAdapterServiceSupport {
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(fieldEntry.getKey().equalsIgnoreCase("content-type")) {
logger.debug("set content-type {}: {}", fieldEntry.getKey(), fieldEntry.getValue());
response.setContentType((String) fieldEntry.getValue());
} else {
logger.debug("add header {}: {}", fieldEntry.getKey(), fieldEntry.getValue());
response.addHeader(fieldEntry.getKey(), (String) fieldEntry.getValue());
if (MessageType.JSON.equals(adptMsgType)) {
JsonNode jsonNode = JacksonUtil.readTree(resultMessage, OBJECT_MAPPER); // 또는
// objectMapper.readTree(resultMessage)
JsonNode headerGroup = jsonNode.get(headerGroupName);
if (headerGroup != null && !headerGroup.isNull()) {
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 {
logger.info("fieldEntry value is not String. {}", fieldEntry.getValue());
logger.info("fieldEntry value is not String. {}", valueNode);
}
}
} else {
logger.info("headerGroup is null");
}
jsonObject.remove(headerGroupName);
return jsonObject.toJSONString();
} else {
logger.info("headerGroup is null");
}
((ObjectNode) jsonNode).remove(headerGroupName);
return jsonNode.toString();
} else if(MessageType.XML.equals(adptMsgType)) {
Document document = XMLUtils.convertXmlDocument(resultMessage);
if(document != null) {