diff --git a/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java b/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java index 5ad4eb6..4f2cb8b 100644 --- a/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java +++ b/src/main/java/com/eactive/eai/adapter/controller/ApiAdapterController.java @@ -1,7 +1,11 @@ package com.eactive.eai.adapter.controller; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; +import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Properties; @@ -23,6 +27,7 @@ import com.eactive.eai.adapter.AdapterGroupVO; import com.eactive.eai.adapter.AdapterManager; import com.eactive.eai.adapter.AdapterPropManager; import com.eactive.eai.adapter.AdapterVO; +import com.eactive.eai.adapter.Keys; import com.eactive.eai.adapter.http.HttpStatusException; import com.eactive.eai.adapter.http.client.HttpClientAdapterServiceKey; import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; @@ -38,11 +43,13 @@ import com.eactive.eai.common.server.EAIServerManager; import com.eactive.eai.common.stdmessage.STDMessageManager; import com.eactive.eai.common.stdmessage.STDMsgInfoAddOnVO; import com.eactive.eai.common.util.DatetimeUtil; -import com.eactive.eai.common.util.HttpAdapterExtraLogUtil; import com.eactive.eai.common.util.InboundErrorLogger; import com.eactive.eai.common.util.Logger; import com.eactive.eai.common.util.MessageUtil; import com.eactive.eai.common.util.UUIDGenerator; +import com.eactive.eai.inbound.action.ActionException; +import com.eactive.eai.inbound.action.ActionFactory; +import com.eactive.eai.inbound.action.RequestAction; import com.eactive.eai.inbound.error.InboundErrorInfoVO; @RestController @@ -69,34 +76,8 @@ public class ApiAdapterController implements HttpAdapterServiceKey { apiUri = StringUtils.removeStart(apiUri, servletRequest.getContextPath()); apiUri = StringUtils.removeEnd(apiUri, "/"); - // ** jwhong TSEAIHS04의 api full path와 비교하여 adapter를 가져온다 - String methodAndUri = servletRequest.getMethod() + "|" + apiUri; - HttpDynamicInAdapterUri adptUri = null; - String bzwkSvcKeyName = ""; // Adapter Group별 Action Class에 따라 구성이 달라짐. 예) - // _AGW_IN_RST_SyS:POST/account/{acc_no} - String adapterGrpName = ""; // Adapter Group명 예) _AGW_IN_RST_SyS : API_PATH(/api/test) - String apiSvcCode = ""; // eaiSvcCd 예) LONNCHCON00005S2 - String apiFullPathKey = ""; // 예) POST|/api/test/account/list, POST|/api/test/account/{acc_no} - Map pathVariables = null; - try { - // PathVariable(ex:/api/test/account/{acc_no}) 대응 및 DAO조회 제거. - // /api/test/account/1234567 호출시 /api/test/account/{acc_no} API 로 식별. - STDMessageManager manager = STDMessageManager.getInstance(); - STDMsgInfoAddOnVO stdMsgInfo = manager.getStdMsgInfoAddOn(methodAndUri); - bzwkSvcKeyName = stdMsgInfo.getBzwksvckeyname(); - apiSvcCode = stdMsgInfo.getEaiSvcCd(); - adapterGrpName = stdMsgInfo.gAdapterGroupName(); - apiFullPathKey = stdMsgInfo.getApiFullPath(); - if (STDMessageManager.isPathVariable(apiFullPathKey)) { - pathVariables = new AntPathMatcher().extractUriTemplateVariables(apiFullPathKey, methodAndUri); - } - - adptUri = findAdptUri(apiUri, HttpDynamicInAdapterManager.getInstance(), adapterGrpName); - } catch (Exception e) { - adptUri = null; - } - // *** - + HttpDynamicInAdapterUri adptUri = findAdptUri(apiUri, HttpDynamicInAdapterManager.getInstance(), ""); + if (logger.isDebug()) { logger.debug("ApiAdapterController] service request uri : " + servletRequest.getRequestURI()); } @@ -135,7 +116,37 @@ public class ApiAdapterController implements HttpAdapterServiceKey { Properties transactionProp = new Properties(); // jwhong, put api received time, eaiSvcCode transactionProp.put(INBOUND_REQUESTED_TIME, receivedTimeStr); - transactionProp.put(API_SERVICE_CODE, apiSvcCode); + + // ** jwhong TSEAIHS04의 api full path와 비교하여 adapter를 가져온다 +// String bzwkSvcKeyName = ""; // Adapter Group별 Action Class에 따라 구성이 달라짐. 예) +// // _AGW_IN_RST_SyS:POST/account/{acc_no} +// String adapterGrpName = ""; // Adapter Group명 예) _AGW_IN_RST_SyS : API_PATH(/api/test) + String apiSvcCode = ""; // eaiSvcCd 예) LONNCHCON00005S2 + String apiFullPathKey = ""; // 예) POST|/api/test/account/list, POST|/api/test/account/{acc_no} + Map pathVariables = null; + try { + // PathVariable(ex:/api/test/account/{acc_no}) 대응 및 DAO조회 제거. + // /api/test/account/1234567 호출시 /api/test/account/{acc_no} API 로 식별. + +// String methodAndUri = getRequestRuledPath(servletRequest, apiUri, adapterVO, transactionProp); + String methodAndUri = servletRequest.getMethod() + "|" + apiUri; + STDMessageManager manager = STDMessageManager.getInstance(); + STDMsgInfoAddOnVO stdMsgInfo = manager.getStdMsgInfoAddOn(methodAndUri); +// bzwkSvcKeyName = stdMsgInfo.getBzwksvckeyname(); + apiSvcCode = stdMsgInfo.getEaiSvcCd(); + transactionProp.put(API_SERVICE_CODE, apiSvcCode); + +// adapterGrpName = stdMsgInfo.gAdapterGroupName(); + apiFullPathKey = stdMsgInfo.getApiFullPath(); + if (STDMessageManager.isPathVariable(apiFullPathKey)) { + pathVariables = new AntPathMatcher().extractUriTemplateVariables(apiFullPathKey, methodAndUri); + } + +// adptUri = findAdptUri(apiUri, HttpDynamicInAdapterManager.getInstance(), adapterGrpName); + } catch (Exception e) { +// adptUri = null; + } + // *** if (pathVariables != null) { transactionProp.put(INBOUND_PATH_VARIABLES, pathVariables); } @@ -220,7 +231,7 @@ public class ApiAdapterController implements HttpAdapterServiceKey { if( postFilterNames.contains("HMAC_SHA256") ) { HttpAdapterFilter filter = HttpAdapterFilterFactoryKjb.createFilter("HMAC_SHA256"); - filter.doPostFilter(adapterGrpName, postFilterNames, errorMsg, transactionProp, servletRequest, servletResponse); + filter.doPostFilter(adapterGroupName, postFilterNames, errorMsg, transactionProp, servletRequest, servletResponse); } @@ -282,7 +293,11 @@ public class ApiAdapterController implements HttpAdapterServiceKey { for (int i = 0; i < 10; i++) { HttpDynamicInAdapterUri adptUri = manager.getAdptUri(apiUri); if (adptUri != null) { - if (adptUri.getAdptGrpName().equals(adapterGrpName)) { + if (StringUtils.isNotEmpty(adapterGrpName)) { + if(adptUri.getAdptGrpName().equals(adapterGrpName)) { + return adptUri; + } + } else { return adptUri; } } diff --git a/src/main/java/com/eactive/eai/adapter/service/ApiAdapterService.java b/src/main/java/com/eactive/eai/adapter/service/ApiAdapterService.java index fb0c4d3..46c22d4 100644 --- a/src/main/java/com/eactive/eai/adapter/service/ApiAdapterService.java +++ b/src/main/java/com/eactive/eai/adapter/service/ApiAdapterService.java @@ -110,6 +110,7 @@ public class ApiAdapterService extends HttpAdapterServiceSupport { transactionProp.put(POST_FILTERS, httpProp.getProperty(POST_FILTERS, "")); transactionProp.put(PROPERTIES_NAME_HTTP_REQUEST_METHOD, request.getMethod()); transactionProp.put(ALLOW_IP, httpProp.getProperty(ALLOW_IP, "")); + transactionProp.put("BLOCK_IP", httpProp.getProperty("BLOCK_IP", "")); transactionProp.put(ENC_PATHS, httpProp.getProperty(ENC_PATHS, ""));