Path Variable처리, API식별방식 변경(DAO->STDMessageManager)
This commit is contained in:
@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.util.AntPathMatcher;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@@ -27,8 +28,8 @@ import com.eactive.eai.adapter.service.ApiAdapterService;
|
|||||||
import com.eactive.eai.common.TransactionContextKeys;
|
import com.eactive.eai.common.TransactionContextKeys;
|
||||||
import com.eactive.eai.common.exception.ExceptionUtil;
|
import com.eactive.eai.common.exception.ExceptionUtil;
|
||||||
import com.eactive.eai.common.server.EAIServerManager;
|
import com.eactive.eai.common.server.EAIServerManager;
|
||||||
import com.eactive.eai.common.stdmessage.STDMessageDAO;
|
import com.eactive.eai.common.stdmessage.STDMessageManager;
|
||||||
import com.eactive.eai.common.util.ApplicationContextProvider;
|
import com.eactive.eai.common.stdmessage.STDMsgInfoAddOnVO;
|
||||||
import com.eactive.eai.common.util.DatetimeUtil;
|
import com.eactive.eai.common.util.DatetimeUtil;
|
||||||
import com.eactive.eai.common.util.InboundErrorLogger;
|
import com.eactive.eai.common.util.InboundErrorLogger;
|
||||||
import com.eactive.eai.common.util.Logger;
|
import com.eactive.eai.common.util.Logger;
|
||||||
@@ -40,7 +41,6 @@ import com.eactive.eai.inbound.error.InboundErrorInfoVO;
|
|||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.eactive.eai.data.entity.onl.stdmessage.StandardMessageInfo;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
public class ApiAdapterController implements HttpAdapterServiceKey {
|
public class ApiAdapterController implements HttpAdapterServiceKey {
|
||||||
@@ -65,16 +65,24 @@ public class ApiAdapterController implements HttpAdapterServiceKey {
|
|||||||
//** jwhong TSEAIHS04의 api full path와 비교하여 adapter를 가져온다
|
//** jwhong TSEAIHS04의 api full path와 비교하여 adapter를 가져온다
|
||||||
String methodAndUri = servletRequest.getMethod() + "|" + apiUri;
|
String methodAndUri = servletRequest.getMethod() + "|" + apiUri;
|
||||||
HttpDynamicInAdapterUri adptUri = null;
|
HttpDynamicInAdapterUri adptUri = null;
|
||||||
String adapterGrpName ="";
|
String bzwkSvcKeyName = ""; // Adapter Group별 Action Class에 따라 구성이 달라짐. 예) _AGW_IN_RST_SyS:POST/account/{acc_no}
|
||||||
String apiSvcCode = "";
|
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<String, String> pathVariables = null;
|
||||||
try {
|
try {
|
||||||
STDMessageDAO dao = ApplicationContextProvider.getContext().getBean(STDMessageDAO.class);
|
// PathVariable(ex:/api/test/account/{acc_no}) 대응 및 DAO조회 제거.
|
||||||
StandardMessageInfo stdInfo = dao.getSTDMsgByPath(methodAndUri);
|
// /api/test/account/1234567 호출시 /api/test/account/{acc_no} API 로 식별.
|
||||||
String serviceKey = stdInfo.getBzwksvckeyname();
|
STDMessageManager manager = STDMessageManager.getInstance();
|
||||||
int idx = serviceKey.indexOf(":");
|
STDMsgInfoAddOnVO stdMsgInfo = manager.getStdMsgInfoAddOn(methodAndUri);
|
||||||
adapterGrpName = (idx != -1) ? serviceKey.substring(0, idx) : serviceKey; // ':' 이전 문자열 추출
|
bzwkSvcKeyName = stdMsgInfo.getBzwksvckeyname();
|
||||||
apiSvcCode = stdInfo.getEaisvcname();
|
apiSvcCode = stdMsgInfo.getEaiSvcCd();
|
||||||
//아래 원래 Logic
|
adapterGrpName = stdMsgInfo.gAdapterGroupName();
|
||||||
|
apiFullPathKey = stdMsgInfo.getApiFullPath();
|
||||||
|
if (STDMessageManager.isPathVariable(apiFullPathKey)) {
|
||||||
|
pathVariables = new AntPathMatcher().extractUriTemplateVariables(apiFullPathKey, methodAndUri);
|
||||||
|
}
|
||||||
|
|
||||||
adptUri = findAdptUri(apiUri, HttpDynamicInAdapterManager.getInstance(), adapterGrpName);
|
adptUri = findAdptUri(apiUri, HttpDynamicInAdapterManager.getInstance(), adapterGrpName);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
adptUri = null;
|
adptUri = null;
|
||||||
@@ -121,6 +129,9 @@ public class ApiAdapterController implements HttpAdapterServiceKey {
|
|||||||
// jwhong, put api received time, eaiSvcCode
|
// jwhong, put api received time, eaiSvcCode
|
||||||
transactionProp.put(INBOUND_REQUESTED_TIME, receivedTimeStr);
|
transactionProp.put(INBOUND_REQUESTED_TIME, receivedTimeStr);
|
||||||
transactionProp.put(API_SERVICE_CODE, apiSvcCode);
|
transactionProp.put(API_SERVICE_CODE, apiSvcCode);
|
||||||
|
if (pathVariables != null) {
|
||||||
|
transactionProp.put(INBOUND_PATH_VARIABLES, pathVariables);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String responseData = service.callApi(servletRequest, servletResponse, httpProp, adapterGroupVO, adapterVO, transactionProp);
|
String responseData = service.callApi(servletRequest, servletResponse, httpProp, adapterGroupVO, adapterVO, transactionProp);
|
||||||
@@ -206,7 +217,6 @@ public class ApiAdapterController implements HttpAdapterServiceKey {
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
HttpDynamicInAdapterUri adptUri = manager.getAdptUri(apiUri);
|
HttpDynamicInAdapterUri adptUri = manager.getAdptUri(apiUri);
|
||||||
if (adptUri != null) {
|
if (adptUri != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user