From f0a36a5365d888eb5f3fb53f3da8e8e58b82778e Mon Sep 17 00:00:00 2001 From: curry772 Date: Thu, 20 Aug 2026 10:40:50 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B3=B4=EC=95=88=EC=84=B1=20=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=EC=BD=94=EB=93=9C=20=EC=A0=90=EA=B2=80=20=EC=A1=B0?= =?UTF-8?q?=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StandardMessageCoordinatorDJB.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/eactive/eai/custom/message/StandardMessageCoordinatorDJB.java b/src/main/java/com/eactive/eai/custom/message/StandardMessageCoordinatorDJB.java index 47b3d71..eb2ef73 100644 --- a/src/main/java/com/eactive/eai/custom/message/StandardMessageCoordinatorDJB.java +++ b/src/main/java/com/eactive/eai/custom/message/StandardMessageCoordinatorDJB.java @@ -209,10 +209,10 @@ public class StandardMessageCoordinatorDJB extends DefaultStandardMessageCoordin msgList.setSize(1); LinkedHashMap row = msgList.getArrayChilds(0, true); if (row != null) { - if (row.containsKey("outp_msg_cd")) row.get("outp_msg_cd").setValue(siteErrCode); - if (row.containsKey("outp_msg_ctnt")) row.get("outp_msg_ctnt").setValue(siteErrMsg); - if (row.containsKey("outp_msg_desc")) row.get("outp_msg_desc").setValue(siteErrDesc); - if (row.containsKey("err_occu_loct")) row.get("err_occu_loct").setValue(errCode); + setIfPresent(row, "outp_msg_cd", siteErrCode); + setIfPresent(row, "outp_msg_ctnt", siteErrMsg); + setIfPresent(row, "outp_msg_desc", siteErrDesc); + setIfPresent(row, "err_occu_loct", errCode); } } @@ -259,6 +259,17 @@ public class StandardMessageCoordinatorDJB extends DefaultStandardMessageCoordin // private helpers // ---------------------------------------------------------------- + /** + * row 에 해당 키의 StandardItem 이 존재할 때만 값을 설정한다. + * containsKey + get 이중 조회를 제거하고 널 역참조 가능성을 차단한다. + */ + private void setIfPresent(LinkedHashMap row, String key, String value) { + StandardItem item = row.get(key); + if (item != null) { + item.setValue(value); + } + } + private void resolveCallPropRefValues(StandardMessage standardMessage, Properties prop) { if (prop == null) return; resolveCallPropInChilds(standardMessage.getChilds(), prop); @@ -275,7 +286,8 @@ public class StandardMessageCoordinatorDJB extends DefaultStandardMessageCoordin if (m.matches()) { String key = m.group(1); String defaultVal = m.group(2) != null ? m.group(2) : ""; - String resolved = resolveCallPropValue(prop, key); + // 패턴상 group(1)은 필수 캡처 그룹이나, 널 역참조 정적분석 지적 대응으로 방어코드 추가 + String resolved = (key != null) ? resolveCallPropValue(prop, key) : null; item.setValue(resolved != null ? resolved : defaultVal); } } else if (type == StandardType.GROUP) {