From 1ba8de1e3b447dbe81590071de7a538bf148c45e Mon Sep 17 00:00:00 2001 From: curry772 Date: Tue, 30 Jun 2026 09:45:52 +0900 Subject: [PATCH] =?UTF-8?q?/=EB=A5=BC=20\/=EB=A1=9C=20escaping=20=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20Jackson=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/service/DJBApiAdapterService.java | 59 +++++++++++-------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/eactive/eai/adapter/service/DJBApiAdapterService.java b/src/main/java/com/eactive/eai/adapter/service/DJBApiAdapterService.java index 4585a89..4621dd7 100644 --- a/src/main/java/com/eactive/eai/adapter/service/DJBApiAdapterService.java +++ b/src/main/java/com/eactive/eai/adapter/service/DJBApiAdapterService.java @@ -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> fieldEntrySet = JSONUtils.getField(headerGroup); - - for (Map.Entry 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> fieldIterator = headerGroup.fields(); + + while (fieldIterator.hasNext()) { + Map.Entry 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) {