package com.eactive.eai.inbound.action; import com.eactive.eai.adapter.AdapterGroupVO; import com.eactive.eai.adapter.AdapterManager; import com.eactive.eai.common.exception.ExceptionUtil; import com.eactive.eai.common.util.Logger; import com.eactive.eai.common.util.MessageKeyExtractor; /** * 1. 기능 : Rest Url 추출 용 * 2. 처리 개요 : * - 어뎁터의 업무그룹코드를 키값앞에 추가한다. * - MessageKeyExtractor를 통해 Adapter별 추출 Rule에 따라 메시지를 구분할 수 있는 키값을 추출한다. * 3. 주의사항 * * @author : * @version : v 1.0.0 * @see : * @since : */ public class RestDataAdapterGroupParseRequestAction extends RequestActionSupport { /** * 1. 기능 : Inbound Adapter를 통해 전달받은 비표준메시지에서 표준메시지를 생성하기 위한 키값을 추출 * 2. 처리 개요 : * - MessageKeyExtractor를 통해 Adapter별 추출 Rule에 따라 메시지를 구분할 수 있는 키값을 추출한다. * 3. 주의사항 * * @param message Object 타입의 요청메시지 * @return String 비표준메시지의 메시지키값 * @exception **/ public String[] perform(Object message) throws ActionException { String[] key = null; AdapterManager adapterManager = AdapterManager.getInstance(); AdapterGroupVO adptGrpVO = adapterManager.getAdapterGroupVO(adapterGroupName); String adptGrpName = adptGrpVO.getName(); if (adptGrpName != null && adptGrpName.length() >= 4) { String chnl = adptGrpName.substring(1, 4); if (adptGrpName.indexOf("{") >= 0 && adptGrpName.indexOf("}") >= 0 && adptGrpName.indexOf("{") < adptGrpName.indexOf("}")) { int start = adptGrpName.indexOf("{") + 1; int end = adptGrpName.indexOf("}"); String inst = adptGrpName.substring(start, end); adptGrpName = chnl + inst; } else { adptGrpName = chnl; } } if(message instanceof byte[]) { try { key = MessageKeyExtractor.getMessageKeyValueForRest(this.adapterGroupName, message, prop, "data", true); } catch(Exception e) { throw new ActionException(ExceptionUtil.getErrorCode(e, "RECEAIIRA001")); } if (logger.isDebug()) logger.debug(adapterName+"] received data >> ["+ new String((byte[])message)+"]"); } else { try { key = MessageKeyExtractor.getMessageKeyValueForRest(this.adapterGroupName, message, prop, "data", true); } catch(Exception e) { throw new ActionException(ExceptionUtil.getErrorCode(e, "RECEAIIRA001")); } if (logger.isDebug()) logger.debug(adapterName+"] received data >> ["+ message+"]"); } for(int i=0; i