diff --git a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java index 4a0aeae..2721707 100644 --- a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java +++ b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java @@ -45,6 +45,9 @@ public class HttpClient5AdapterFilterFactory { case NICECREDIT: filter = new NICECreditFilter(); break; + case TOSSBANKBODY: + filter = new TOSSBankBodyFilter(); + break; case TOSSBANK: filter = new TOSSBankFilter(); break; diff --git a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java index 150f9c5..51b1638 100644 --- a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java +++ b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java @@ -10,6 +10,7 @@ public enum HttpClient5AdapterFilterType { NAVERFIN, NICECREDIT, TOSSBANK, + TOSSBANKBODY, ASYNCRESPONSE, ALLHEADER, UNKNOWN; diff --git a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java new file mode 100644 index 0000000..a72c6c0 --- /dev/null +++ b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java @@ -0,0 +1,71 @@ +package com.eactive.eai.custom.kjb.adapter.http.client.filter; + +import java.util.Properties; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; +import com.eactive.eai.common.TransactionContextKeys; +import com.eactive.eai.common.util.Logger; +import com.nimbusds.jose.shaded.gson.JsonObject; + +public class TOSSBankBodyFilter implements HttpClientAdapterFilter, HttpAdapterServiceKey { + + protected static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER); + + public static final String BIZ_HEADER = "header"; + public static final String GUID = "guid"; + public static final String TRACEID = "traceId"; + + @Override + public Object doPreFilter(String adptGrpName, String adptName, Properties prop, Object message, Properties tempProp) + throws Exception { + + JSONObject bizJsonStr = null; + + if (message instanceof String) { + + bizJsonStr = (JSONObject) JSONValue.parse((String) message); + + if ( bizJsonStr == null ) return message; //json string이 아님. + + if (bizJsonStr.containsKey(BIZ_HEADER)) { + JSONObject bizHeader = (JSONObject) bizJsonStr.get(BIZ_HEADER); + + putBizHeaderData(bizHeader, tempProp); + + }else { + + JSONObject bizHeader = new JSONObject(); + bizJsonStr.put(BIZ_HEADER, bizHeader); + putBizHeaderData(bizHeader, tempProp); + + } + + } + + return bizJsonStr != null ? bizJsonStr.toJSONString() : message; + } + + static private void putBizHeaderData(JSONObject bizHeader, Properties tempProp) { + + String traceId = tempProp.getProperty(TransactionContextKeys.TRANSACTION_UUID, ""); + + String guid = tempProp.getProperty(TransactionContextKeys.GUID, ""); + + bizHeader.put(GUID, guid); + logger.debug("Processing Key [" + GUID + "], value [" + guid + "]"); + + bizHeader.put(TRACEID, traceId); + logger.debug("Processing Key [" + TRACEID + "], value [" + traceId + "]"); + } + + @Override + public Object doPostFilter(String adptGrpName, String adptName, Properties prop, Object message, + Properties tempProp) throws Exception { + // TODO Auto-generated method stub + return message; + } + +}