어댑터 에러 핸들러 추가
This commit is contained in:
+99
@@ -0,0 +1,99 @@
|
|||||||
|
package com.eactive.eai.custom.adapter.handler;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import com.eactive.eai.adapter.handler.TemplateCodeConvertAdapterErrorMsgHandler;
|
||||||
|
import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey;
|
||||||
|
import com.eactive.eai.common.message.EAIMessage;
|
||||||
|
import com.eactive.eai.common.message.EAIMessageKeys;
|
||||||
|
import com.eactive.eai.common.util.MessageUtil;
|
||||||
|
import com.eactive.eai.custom.message.StandardMessageCoordinatorDJB;
|
||||||
|
import com.eactive.eai.message.StandardItem;
|
||||||
|
import com.eactive.eai.message.StandardMessage;
|
||||||
|
import com.eactive.eai.message.manager.StandardMessageManager;
|
||||||
|
import com.eactive.eai.message.service.InterfaceMapper;
|
||||||
|
import com.eactive.eai.util.JsonPathUtil;
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
|
||||||
|
public class DJbCommonAdapterErrorMsgHandler extends TemplateCodeConvertAdapterErrorMsgHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 표준 -> 비표준 거래 아웃바운드 어댑터에서 Exception이 발생했을 때, Outbound Process 응답 메시지 생성
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Object generateOutboundErrorResponseMessage(String outboundadapterGroupName, String outboundadapterName,
|
||||||
|
Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg) throws Exception {
|
||||||
|
|
||||||
|
StandardMessage standardMessage = resEaiMsg.getStandardMessage();
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Map<String, Object> map = (Map<String, Object>) callProp.get(HttpAdapterServiceKey.OUTBOUND_PROPERTY_MAP);
|
||||||
|
Object responseMessage = map.get(HttpAdapterServiceKey.OUTBOUND_RESPONSE_MESSAGE);
|
||||||
|
String rspErrCd = resEaiMsg.getRspErrCd();
|
||||||
|
String errorCode = StringUtils.defaultString(MessageUtil.getTobeCode(rspErrCd));
|
||||||
|
String errorMsg = StringUtils.defaultString(MessageUtil.getTobeMessage(rspErrCd));
|
||||||
|
String errorDesc = StringUtils.defaultString(MessageUtil.getTobeDesc(rspErrCd));
|
||||||
|
String errorLoc = StringUtils.substring(resEaiMsg.getRspErrMsg(), 0, 200);
|
||||||
|
|
||||||
|
JsonNode jsonNode = JsonPathUtil.toTree(responseMessage);
|
||||||
|
|
||||||
|
if (jsonNode != null) {
|
||||||
|
if(jsonNode.has("rspCode"))
|
||||||
|
errorCode = jsonNode.get("rspCode").asText();
|
||||||
|
|
||||||
|
if(jsonNode.has("rspMsg"))
|
||||||
|
errorMsg = jsonNode.get("rspMsg").asText();
|
||||||
|
|
||||||
|
if(jsonNode.has("outpMsgDesc"))
|
||||||
|
errorDesc = jsonNode.get("outpMsgDesc").asText();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// msg_dvcd = EM (에러메시지)
|
||||||
|
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_DVCD, "EM");
|
||||||
|
|
||||||
|
// 출력속성코드 = 1(팝업)
|
||||||
|
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_OUTP_ATRB_CD, "1");
|
||||||
|
|
||||||
|
StandardMessageManager manager = StandardMessageManager.getInstance();
|
||||||
|
InterfaceMapper mapper = manager.getMapper();
|
||||||
|
|
||||||
|
// mapper 에러코드 설정
|
||||||
|
mapper.setErrorCode(standardMessage, errorCode);
|
||||||
|
mapper.setErrorMsg(standardMessage, errorMsg);
|
||||||
|
|
||||||
|
// MSG_LIST 1건 구성
|
||||||
|
StandardItem msgList = standardMessage.findItem(StandardMessageCoordinatorDJB.MSG_LIST);
|
||||||
|
if(msgList == null) {
|
||||||
|
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_LIST_ROWCNT, "1");
|
||||||
|
msgList = standardMessage.findItem(StandardMessageCoordinatorDJB.MSG_LIST);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msgList != null) {
|
||||||
|
msgList.setSize(1);
|
||||||
|
LinkedHashMap<String, StandardItem> row = msgList.getArrayChilds(0, true);
|
||||||
|
if (row != null) {
|
||||||
|
if (row.containsKey("outp_msg_cd"))
|
||||||
|
row.get("outp_msg_cd").setValue(errorCode);
|
||||||
|
if (row.containsKey("outp_msg_ctnt"))
|
||||||
|
row.get("outp_msg_ctnt").setValue(errorMsg);
|
||||||
|
if (row.containsKey("outp_msg_desc"))
|
||||||
|
row.get("outp_msg_desc").setValue(errorDesc);
|
||||||
|
if (row.containsKey("err_occu_loct"))
|
||||||
|
row.get("err_occu_loct").setValue(errorLoc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 성공 처리 처럼 진행한다.
|
||||||
|
resEaiMsg.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false);
|
||||||
|
|
||||||
|
// 응답 메시지 리턴
|
||||||
|
return "";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+33
-30
@@ -2,47 +2,50 @@ package com.eactive.eai.custom.adapter.handler;
|
|||||||
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import com.eactive.eai.adapter.handler.TemplateCodeConvertAdapterErrorMsgHandler;
|
import com.eactive.eai.adapter.handler.TemplateCodeConvertAdapterErrorMsgHandler;
|
||||||
import com.eactive.eai.common.message.EAIMessage;
|
import com.eactive.eai.common.message.EAIMessage;
|
||||||
import com.eactive.eai.common.util.Logger;
|
import com.eactive.eai.common.message.EAIMessageKeys;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.eactive.eai.custom.message.StandardMessageCoordinatorDJB;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.eactive.eai.message.StandardItem;
|
||||||
|
import com.eactive.eai.message.StandardMessage;
|
||||||
|
import com.eactive.eai.message.manager.StandardMessageManager;
|
||||||
|
import com.eactive.eai.message.service.InterfaceMapper;
|
||||||
|
|
||||||
public class ErpAdapterErrorMsgHandler extends TemplateCodeConvertAdapterErrorMsgHandler {
|
public class ErpAdapterErrorMsgHandler extends TemplateCodeConvertAdapterErrorMsgHandler {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
|
/**
|
||||||
|
* 표준 -> 비표준 거래
|
||||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
* 아웃바운드 어댑터에서 Exception이 발생했을 때, Outbound Process 응답 메시지 생성
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object generateNonStandardErrorResponseMessage(String inboundAdapterGroupName, String inboundAdapterName,
|
public Object generateOutboundErrorResponseMessage(String outboundadapterGroupName,
|
||||||
Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg) throws Exception {
|
String outboundadapterName, Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
StandardMessage standardMessage = resEaiMsg.getStandardMessage();
|
||||||
|
// msg_dvcd = EM (에러메시지)
|
||||||
|
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_DVCD, "NM");
|
||||||
|
|
||||||
Object responseMsessage = super.generateNonStandardErrorResponseMessage(inboundAdapterGroupName,
|
// 출력속성코드 = 1(팝업)
|
||||||
inboundAdapterName, callProp, outboundRequestData, resEaiMsg);
|
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_OUTP_ATRB_CD, "1");
|
||||||
|
|
||||||
logger.debug("generateNonStandardErrorResponseMessage - {}", responseMsessage);
|
// MSG_LIST 1건 구성
|
||||||
|
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_LIST_ROWCNT, "0");
|
||||||
|
StandardItem msgPart = standardMessage.findItem("MSG");
|
||||||
|
msgPart.getChilds().remove("MSG_LIST");
|
||||||
|
|
||||||
if (!(responseMsessage instanceof String)) {
|
StandardMessageManager manager = StandardMessageManager.getInstance();
|
||||||
return responseMsessage;
|
InterfaceMapper mapper = manager.getMapper();
|
||||||
}
|
|
||||||
|
// mapper 에러코드 설정
|
||||||
|
mapper.setErrorCode(standardMessage, "");
|
||||||
|
mapper.setErrorMsg(standardMessage, "처리오류");
|
||||||
|
|
||||||
String jsonStr = (String) responseMsessage;
|
// 성공 처리 처럼 진행한다.
|
||||||
if (StringUtils.isBlank(jsonStr)) {
|
resEaiMsg.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false);
|
||||||
return responseMsessage;
|
|
||||||
}
|
return null;
|
||||||
|
|
||||||
JsonNode rootNode = OBJECT_MAPPER.readTree(jsonStr);
|
|
||||||
|
|
||||||
boolean modified = false;
|
|
||||||
|
|
||||||
if (modified) {
|
|
||||||
responseMsessage = OBJECT_MAPPER.writeValueAsString(rootNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
return responseMsessage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user