비동기 400응답 필터 추가 및 INBOUND_HEADER contains비교 방식 insensitive로 변경.

This commit is contained in:
Yunsam.Eo
2025-12-26 09:34:30 +09:00
parent d477d1d575
commit d001b3cd5a
9 changed files with 231 additions and 50 deletions
@@ -0,0 +1,65 @@
package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey;
import com.eactive.eai.common.TransactionContextKeys;
import com.eactive.eai.common.property.PropGroupVO;
import com.eactive.eai.common.property.PropManager;
import com.eactive.eai.common.util.Logger;
public class AsyncReponseFilter implements HttpClientAdapterFilter, HttpAdapterServiceKey {
protected static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
public static final String X_TRACE_ID = "partnerTraceId";
public static final String TRACE_ID = "traceId";
@Override
public Object doPreFilter(String adptGrpName, String adptName, Properties prop, Object message, Properties tempProp)
throws Exception {
logger.debug("AsyncReponseFilter] PreFilter Processing Start!!");
Object returnMessage = message;
String traceId = tempProp.getProperty(TransactionContextKeys.TRANSACTION_UUID, "");
Properties filterHeaders = (Properties) tempProp.get("FILTERHEADER");
if (filterHeaders == null) {
filterHeaders = new Properties();
tempProp.put("FILTERHEADER", filterHeaders);
}
try {
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(X_TRACE_ID)) {
filterHeaders.put(X_TRACE_ID, inboundHeaderMap.get(X_TRACE_ID));
logger.debug("AsyncReponseFilter] Processing Key ["+X_TRACE_ID+"], value ["+inboundHeaderMap.get(X_TRACE_ID)+"]");
}
}
filterHeaders.setProperty(TRACE_ID, traceId);
logger.debug("AsyncReponseFilter] Processing Key ["+TRACE_ID+"], value ["+traceId+"]");
} catch (Exception e) {
logger.error(e.getMessage());
}
return returnMessage;
}
@Override
public Object doPostFilter(String adptGrpName, String adptName, Properties prop, Object message,
Properties tempProp) throws Exception {
return message;
}
}
@@ -45,6 +45,9 @@ public class HttpClient5AdapterFilterFactory {
case TOSSBANK:
filter = new TOSSBankFilter();
break;
case ASYNCRESPONSE:
filter = new AsyncReponseFilter();
break;
default:
filter = classForName(type);
if (filter == null) {
@@ -9,6 +9,7 @@ public enum HttpClient5AdapterFilterType {
NAVERFIN,
NICECREDIT,
TOSSBANK,
ASYNCRESPONSE,
UNKNOWN;
public static HttpClient5AdapterFilterType getValue(String type) {
@@ -1,7 +1,9 @@
package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.util.Map.Entry;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import org.apache.commons.lang3.StringUtils;
@@ -72,20 +74,39 @@ public class JBOBPFilter implements HttpClientAdapterFilter, HttpAdapterServiceK
tempProp.put("FILTERHEADER", filterHeaders);
}
try {
String obpPartnerCode = "000000-00";
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
if (inboundHeader != null){
for (Entry<Object, Object> e : inboundHeader.entrySet()) {
String key = (String) e.getKey();
String value = (String) e.getValue();
if (StringUtils.equalsIgnoreCase(key, X_OBP_PARTNERCODE)) {
filterHeaders.setProperty(key, value);
logger.debug("JBOBPFilter] Processing Key ["+X_OBP_PARTNERCODE+"], value ["+value+"]");
}
if (logger.isDebugEnabled()) {
logger.debug("Request Header :" + key + "=[" + value + "]");
}
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(X_OBP_PARTNERCODE)) {
filterHeaders.put(X_OBP_PARTNERCODE, inboundHeaderMap.get(X_OBP_PARTNERCODE));
logger.debug("JBOBPFilter] Processing Key ["+X_OBP_PARTNERCODE+"], value ["+inboundHeaderMap.get(X_OBP_PARTNERCODE)+"]");
} else {
filterHeaders.put(X_OBP_PARTNERCODE, obpPartnerCode);
logger.debug("JBOBPFilter] Processing Key ["+X_OBP_PARTNERCODE+"], value ["+obpPartnerCode+"]");
}
} else {
filterHeaders.put(X_OBP_PARTNERCODE, obpPartnerCode);
logger.debug("JBOBPFilter] Processing Key ["+X_OBP_PARTNERCODE+"], value ["+obpPartnerCode+"]");
// if (inboundHeader != null){
// for (Entry<Object, Object> e : inboundHeader.entrySet()) {
// String key = (String) e.getKey();
// String value = (String) e.getValue();
//
// if (StringUtils.equalsIgnoreCase(key, X_OBP_PARTNERCODE)) {
// filterHeaders.setProperty(key, value);
// logger.debug("JBOBPFilter] Processing Key ["+X_OBP_PARTNERCODE+"], value ["+value+"]");
// }
// if (logger.isDebugEnabled()) {
// logger.debug("Request Header :" + key + "=[" + value + "]");
// }
// }
}
String uuid = tempProp.getProperty(TransactionContextKeys.TRANSACTION_UUID, "");
@@ -2,7 +2,9 @@ package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey;
import com.eactive.eai.common.property.PropGroupVO;
@@ -48,29 +50,36 @@ public class KAKAOBankFilter implements HttpClientAdapterFilter, HttpAdapterServ
}
try {
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
if (inboundHeader != null) {
if (inboundHeader.containsKey(X_KKB_PARTNER_CODE)) {
filterHeaders.put(X_KKB_PARTNER_CODE, inboundHeader.get(X_KKB_PARTNER_CODE));
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(X_KKB_PARTNER_CODE)) {
filterHeaders.put(X_KKB_PARTNER_CODE, inboundHeaderMap.get(X_KKB_PARTNER_CODE));
} else {
filterHeaders.put(X_KKB_PARTNER_CODE, partnerCode);
}
if (inboundHeader.containsKey(X_KKB_API_NAME)) {
filterHeaders.put(X_KKB_API_NAME, inboundHeader.get(X_KKB_API_NAME));
if (inboundHeaderMap.containsKey(X_KKB_API_NAME)) {
filterHeaders.put(X_KKB_API_NAME, inboundHeaderMap.get(X_KKB_API_NAME));
} else {
filterHeaders.put(X_KKB_API_NAME, apiName);
}
if (inboundHeader.containsKey(X_KKB_API_TX_ID)) {
filterHeaders.put(X_KKB_API_TX_ID, inboundHeader.get(X_KKB_API_TX_ID));
if (inboundHeaderMap.containsKey(X_KKB_API_TX_ID)) {
filterHeaders.put(X_KKB_API_TX_ID, inboundHeaderMap.get(X_KKB_API_TX_ID));
} else {
filterHeaders.put(X_KKB_API_TX_ID, apiTxId);
}
if (inboundHeader.containsKey(X_KKB_TX_TIME)) {
filterHeaders.put(X_KKB_TX_TIME, inboundHeader.get(X_KKB_TX_TIME));
if (inboundHeaderMap.containsKey(X_KKB_TX_TIME)) {
filterHeaders.put(X_KKB_TX_TIME, inboundHeaderMap.get(X_KKB_TX_TIME));
} else {
filterHeaders.put(X_KKB_TX_TIME, txTime);
}
if (inboundHeader.containsKey(X_KKB_CMPR_MGMT_NO)) {
filterHeaders.put(X_KKB_CMPR_MGMT_NO, inboundHeader.get(X_KKB_CMPR_MGMT_NO));
if (inboundHeaderMap.containsKey(X_KKB_CMPR_MGMT_NO)) {
filterHeaders.put(X_KKB_CMPR_MGMT_NO, inboundHeaderMap.get(X_KKB_CMPR_MGMT_NO));
} else {
filterHeaders.put(X_KKB_CMPR_MGMT_NO, cmprMgmtNo);
}
@@ -3,7 +3,9 @@ package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.util.Map.Entry;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
@@ -65,19 +67,34 @@ public class KFTCFaceFilter implements HttpClientAdapterFilter, HttpAdapterServi
}
try {
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
if (inboundHeader != null && inboundHeader.containsKey(H_CLIENT_ID)) {
for (Entry<Object, Object> e : inboundHeader.entrySet()) {
String key = (String) e.getKey();
String value = (String) e.getValue();
if (StringUtils.equalsIgnoreCase(key, H_CLIENT_ID)) {
filterHeaders.setProperty(key, value);
logger.debug("KFTCFaceFilter] Processing Key ["+H_CLIENT_ID+"], value ["+value+"]");
}
if (logger.isDebugEnabled()) {
logger.debug("Request Header :" + key + "=[" + value + "]");
}
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(H_CLIENT_ID)) {
filterHeaders.put(H_CLIENT_ID, inboundHeaderMap.get(H_CLIENT_ID));
logger.debug("KFTCFaceFilter] Processing Key ["+H_CLIENT_ID+"], value ["+inboundHeaderMap.get(H_CLIENT_ID)+"]");
} else {
filterHeaders.put(H_CLIENT_ID, clientId);
logger.debug("KFTCFaceFilter] Processing Key ["+H_CLIENT_ID+"], value ["+clientId+"]");
}
// if (inboundHeader != null && inboundHeader.containsKey(H_CLIENT_ID)) {
// for (Entry<Object, Object> e : inboundHeader.entrySet()) {
// String key = (String) e.getKey();
// String value = (String) e.getValue();
//
// if (StringUtils.equalsIgnoreCase(key, H_CLIENT_ID)) {
// filterHeaders.setProperty(key, value);
// logger.debug("KFTCFaceFilter] Processing Key ["+H_CLIENT_ID+"], value ["+value+"]");
// }
// if (logger.isDebugEnabled()) {
// logger.debug("Request Header :" + key + "=[" + value + "]");
// }
// }
} else {
filterHeaders.setProperty(H_CLIENT_ID, clientId);
logger.debug("KFTCFaceFilter] Processing Key ["+H_CLIENT_ID+"], value ["+clientId+"]");
@@ -2,7 +2,9 @@ package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import org.apache.commons.lang3.RandomStringUtils;
@@ -44,19 +46,40 @@ public class KFTCP2PFilter implements HttpClientAdapterFilter, HttpAdapterServic
}
try {
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
if (inboundHeader != null) {
if (inboundHeader.containsKey(H_TRX_NO)) {
filterHeaders.put(H_TRX_NO, inboundHeader.get(H_TRX_NO));
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(H_TRX_NO)) {
filterHeaders.put(H_TRX_NO, inboundHeaderMap.get(H_TRX_NO));
logger.debug("KFTCP2PFilter] Processing Key ["+H_TRX_NO+"], value ["+inboundHeaderMap.get(H_TRX_NO)+"]");
} else {
filterHeaders.put(H_TRX_NO, apiTrxNo);
logger.debug("KFTCP2PFilter] Processing Key ["+H_TRX_NO+"], value ["+apiTrxNo+"]");
}
if (inboundHeader.containsKey(H_TRX_DTM)) {
filterHeaders.put(H_TRX_DTM, inboundHeader.get(H_TRX_DTM));
if (inboundHeaderMap.containsKey(H_TRX_DTM)) {
filterHeaders.put(H_TRX_DTM, inboundHeaderMap.get(H_TRX_DTM));
logger.debug("KFTCP2PFilter] Processing Key ["+H_TRX_DTM+"], value ["+inboundHeaderMap.get(H_TRX_DTM)+"]");
} else {
filterHeaders.put(H_TRX_DTM, apiTrxDtm);
logger.debug("KFTCP2PFilter] Processing Key ["+H_TRX_DTM+"], value ["+apiTrxDtm+"]");
}
// if (inboundHeader != null) {
// if (inboundHeader.containsKey(H_TRX_NO)) {
// filterHeaders.put(H_TRX_NO, inboundHeader.get(H_TRX_NO));
// } else {
// filterHeaders.put(H_TRX_NO, apiTrxNo);
// }
// if (inboundHeader.containsKey(H_TRX_DTM)) {
// filterHeaders.put(H_TRX_DTM, inboundHeader.get(H_TRX_DTM));
// } else {
// filterHeaders.put(H_TRX_DTM, apiTrxDtm);
// }
} else {
// filterHeaders.setProperty(H_TRX_NO, apiTrxNo);
filterHeaders.put(H_TRX_NO, apiTrxNo);
filterHeaders.put(H_TRX_DTM, apiTrxDtm);
}
@@ -1,6 +1,8 @@
package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey;
import com.eactive.eai.common.property.PropGroupVO;
@@ -38,17 +40,39 @@ public class NAVERFinFilter implements HttpClientAdapterFilter, HttpAdapterServi
}
try {
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
if (inboundHeader != null) {
if (inboundHeader.containsKey(X_PARTNER_ID)) {
filterHeaders.put(X_PARTNER_ID, inboundHeader.get(X_PARTNER_ID));
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(X_PARTNER_ID)) {
filterHeaders.put(X_PARTNER_ID, inboundHeaderMap.get(X_PARTNER_ID));
logger.debug("NAVERFinFilter] Processing Key ["+X_PARTNER_ID+"], value ["+inboundHeaderMap.get(X_PARTNER_ID)+"]");
} else {
filterHeaders.put(X_PARTNER_ID, partnerID);
logger.debug("NAVERFinFilter] Processing Key ["+X_PARTNER_ID+"], value ["+partnerID+"]");
}
if (inboundHeader.containsKey(X_FINTECH_ID)) {
filterHeaders.put(X_FINTECH_ID, inboundHeader.get(X_FINTECH_ID));
if (inboundHeaderMap.containsKey(X_FINTECH_ID)) {
filterHeaders.put(X_FINTECH_ID, inboundHeaderMap.get(X_FINTECH_ID));
logger.debug("NAVERFinFilter] Processing Key ["+X_FINTECH_ID+"], value ["+inboundHeaderMap.get(X_FINTECH_ID)+"]");
} else {
filterHeaders.put(X_FINTECH_ID, fintechId);
logger.debug("NAVERFinFilter] Processing Key ["+X_FINTECH_ID+"], value ["+fintechId+"]");
}
// if (inboundHeader != null) {
// if (inboundHeader.containsKey(X_PARTNER_ID)) {
// filterHeaders.put(X_PARTNER_ID, inboundHeader.get(X_PARTNER_ID));
// } else {
// filterHeaders.put(X_PARTNER_ID, partnerID);
// }
// if (inboundHeader.containsKey(X_FINTECH_ID)) {
// filterHeaders.put(X_FINTECH_ID, inboundHeader.get(X_FINTECH_ID));
// } else {
// filterHeaders.put(X_FINTECH_ID, fintechId);
// }
} else {
filterHeaders.put(X_PARTNER_ID, partnerID);
filterHeaders.put(X_FINTECH_ID, fintechId);
@@ -1,6 +1,8 @@
package com.eactive.eai.custom.kjb.adapter.http.client.filter;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey;
import com.eactive.eai.common.TransactionContextKeys;
@@ -37,17 +39,33 @@ public class TOSSBankFilter implements HttpClientAdapterFilter, HttpAdapterServi
}
try {
Properties inboundHeader = (Properties)tempProp.get(INBOUND_HEADER);
if (inboundHeader != null) {
if (inboundHeader.containsKey(X_TOSSBANK_LOAN_TRACE_ID)) {
filterHeaders.put(X_TOSSBANK_LOAN_TRACE_ID, inboundHeader.get(X_TOSSBANK_LOAN_TRACE_ID));
Map<String, String> inboundHeaderMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
// Properties 내용을 모두 복사
for (String name : inboundHeader.stringPropertyNames()) {
inboundHeaderMap.put(name, inboundHeader.getProperty(name));
}
if (!inboundHeaderMap.isEmpty()) {
if (inboundHeaderMap.containsKey(X_TOSSBANK_LOAN_TRACE_ID)) {
filterHeaders.put(X_TOSSBANK_LOAN_TRACE_ID, inboundHeaderMap.get(X_TOSSBANK_LOAN_TRACE_ID));
logger.debug("TOSSBankFilter] Processing Key ["+X_TOSSBANK_LOAN_TRACE_ID+"], value ["+inboundHeaderMap.get(X_TOSSBANK_LOAN_TRACE_ID)+"]");
} else {
filterHeaders.put(X_TOSSBANK_LOAN_TRACE_ID, traceId);
logger.debug("TOSSBankFilter] Processing Key ["+X_TOSSBANK_LOAN_TRACE_ID+"], value ["+traceId+"]");
}
// if (inboundHeader != null) {
// if (inboundHeader.containsKey(X_TOSSBANK_LOAN_TRACE_ID)) {
// filterHeaders.put(X_TOSSBANK_LOAN_TRACE_ID, inboundHeader.get(X_TOSSBANK_LOAN_TRACE_ID));
// } else {
// filterHeaders.put(X_TOSSBANK_LOAN_TRACE_ID, traceId);
// }
} else {
/* APIM 거래추적자 */
filterHeaders.setProperty(X_TOSSBANK_LOAN_TRACE_ID, traceId);
logger.debug("TOSSBankFilter] Processing Key ["+X_TOSSBANK_LOAN_TRACE_ID+"], value ["+traceId+"]");
}
logger.debug("NAVERFinFilter] Processing Key ["+X_TOSSBANK_LOAN_TRACE_ID+"], value ["+filterHeaders.getProperty(X_TOSSBANK_LOAN_TRACE_ID)+"]");
logger.debug("TOSSBankFilter] Processing Key ["+X_TOSSBANK_LOAN_TRACE_ID+"], value ["+filterHeaders.getProperty(X_TOSSBANK_LOAN_TRACE_ID)+"]");
} catch (Exception e) {
logger.error(e.getMessage());