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) {