어댑터 에러 핸들러 추가
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 "";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+30
-27
@@ -2,47 +2,50 @@ package com.eactive.eai.custom.adapter.handler;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.eactive.eai.adapter.handler.TemplateCodeConvertAdapterErrorMsgHandler;
|
||||
import com.eactive.eai.common.message.EAIMessage;
|
||||
import com.eactive.eai.common.util.Logger;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.eactive.eai.common.message.EAIMessageKeys;
|
||||
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;
|
||||
|
||||
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
|
||||
public Object generateNonStandardErrorResponseMessage(String inboundAdapterGroupName, String inboundAdapterName,
|
||||
Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg) throws Exception {
|
||||
public Object generateOutboundErrorResponseMessage(String outboundadapterGroupName,
|
||||
String outboundadapterName, Properties callProp, Object outboundRequestData, EAIMessage resEaiMsg)
|
||||
throws Exception {
|
||||
|
||||
Object responseMsessage = super.generateNonStandardErrorResponseMessage(inboundAdapterGroupName,
|
||||
inboundAdapterName, callProp, outboundRequestData, resEaiMsg);
|
||||
StandardMessage standardMessage = resEaiMsg.getStandardMessage();
|
||||
// msg_dvcd = EM (에러메시지)
|
||||
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_DVCD, "NM");
|
||||
|
||||
logger.debug("generateNonStandardErrorResponseMessage - {}", responseMsessage);
|
||||
// 출력속성코드 = 1(팝업)
|
||||
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_OUTP_ATRB_CD, "1");
|
||||
|
||||
if (!(responseMsessage instanceof String)) {
|
||||
return responseMsessage;
|
||||
}
|
||||
// MSG_LIST 1건 구성
|
||||
standardMessage.setData(StandardMessageCoordinatorDJB.MSG_LIST_ROWCNT, "0");
|
||||
StandardItem msgPart = standardMessage.findItem("MSG");
|
||||
msgPart.getChilds().remove("MSG_LIST");
|
||||
|
||||
String jsonStr = (String) responseMsessage;
|
||||
if (StringUtils.isBlank(jsonStr)) {
|
||||
return responseMsessage;
|
||||
}
|
||||
StandardMessageManager manager = StandardMessageManager.getInstance();
|
||||
InterfaceMapper mapper = manager.getMapper();
|
||||
|
||||
JsonNode rootNode = OBJECT_MAPPER.readTree(jsonStr);
|
||||
// mapper 에러코드 설정
|
||||
mapper.setErrorCode(standardMessage, "");
|
||||
mapper.setErrorMsg(standardMessage, "처리오류");
|
||||
|
||||
boolean modified = false;
|
||||
// 성공 처리 처럼 진행한다.
|
||||
resEaiMsg.setRspErrCd(EAIMessageKeys.EAI_SUCCESS_CODE, false);
|
||||
|
||||
if (modified) {
|
||||
responseMsessage = OBJECT_MAPPER.writeValueAsString(rootNode);
|
||||
}
|
||||
return null;
|
||||
|
||||
return responseMsessage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user