package com.eactive.eai.inbound.action; 

import com.eactive.eai.common.exception.ExceptionUtil;
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 RestHeaderParseRequestAction 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;

		if (message instanceof byte[]) {
			try {
				key = MessageKeyExtractor.getMessageKeyValueForRest(this.adapterGroupName, message, prop, "header",
						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, "header",
						true);
			} catch (Exception e) {
				throw new ActionException(ExceptionUtil.getErrorCode(e, "RECEAIIRA001"));
			}
			if (logger.isDebug())
				logger.debug(adapterName + "] received data >> [" + message + "]");
		}

		return key;
	}
} 
