//package com.eactive.eai.adapter.http; 
//
//import java.net.URLDecoder;
//import java.net.URLEncoder;
//import java.util.Properties;
//import javax.naming.Context;
//import javax.naming.InitialContext;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import com.eactive.eai.adapter.RequestDispatcher;
//import com.eactive.eai.common.exception.ExceptionUtil;
//import com.eactive.eai.common.util.LogKeys;
//import com.eactive.eai.common.util.Logger;
//import com.eactive.eai.common.util.StringUtil;
//
///** 
//* 1. 기능 : HTTP 웹 요청을 수신해 EAI 프레임웍에 전달하는 HTTP 어댑터
//* 2. 처리 개요 : 
//* *     - 약속된 URL 파라미터(“_message_”)의 값을 얻어 RequestDispatcher의 handle() 메서드를 호출한다.
//* 3. 주의사항 
//*
//* @author  : 
//* @version : v 1.0.0
//* @see : EAIHttpAdapter.java, RequestDispatcher.java
//* @since   : 
//*  : 
//*/
//public class HttpAdapter extends HttpServlet
//{ 
//    /*
//     * URL 파리미터 이름
//     */
//    static final String PARAMETER_MESSAGE = "_message_";
//    /*
//     * Http Adapter 이름
//     */
//    static final String HTTP_ADAPTER_NAME       = "HTTP_ADAPTER_NAME";
//    /*
//     * Http Adapter Group 이름
//     */
//    static final String HTTP_ADAPTER_GROUP_NAME = "HTTP_ADAPTER_GROUP_NAME";
//    
//    private String adapterGroupName;
//    private String adapterName;
//    /*
//     * Adapter Logger
//     */
//    static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
//    
//    /** 
//    * 1. 기능 : Http Adapter의 property 속성을 설정한다.
//    * 2. 처리 개요 : 
//    *     - 
//    * 3. 주의사항 
//    *
//    **/ 
//    public void init() {
//        //-------------------------------------------------------
//        // Edited 2007.09.12 : DHLEE
//        //-------------------------------------------------------
//        this.adapterName = this.getInitParameter(HTTP_ADAPTER_NAME);  
//        this.adapterGroupName = this.getInitParameter(HTTP_ADAPTER_GROUP_NAME);  
//        //-------------------------------------------------------
//        
//        if(this.adapterName == null)        this.adapterName = "IN_HTTP_STD_Sync01"; 
//        if(this.adapterGroupName == null)   this.adapterGroupName = "HttpAdapter{STD}"; 
//        
//        String[] msgArgs = new String[2];
//        msgArgs[0] = this.adapterGroupName;
//        msgArgs[1] = this.adapterName;
//        String resMsg = ExceptionUtil.make("RDCEAIAHA004", msgArgs);
//        if(logger.isDebug()){
//            logger.debug("HttpAdapter] " + resMsg);
//        }
//    }
//
//    /** 
//    * 1. 기능 : 로컬 서비스 호출하는 비지니스 로직 
//    * 2. 처리 개요 : 
//    *     - 로컬 서비스를 호출 하여 업무를 처리하고 결과를 리턴 한다.
//    * 3. 주의사항 
//    *
//    * @param    message 요청 메시지
//    * @return   prop    Http Adapter 속성 정보
//    * @exception    Exception   리턴 Object의 타입이 틀릴 경우
//    **/ 
//    protected byte[] service(byte[] message, Properties prop) throws Exception {
//        Object obj = RequestDispatcher.getRequestDispatcher(this.adapterGroupName).handle(adapterName,message,prop);
//        if(obj == null) return null;
//        if(obj instanceof byte[]) {
//            return (byte[])obj;   
//        } else if(obj instanceof String) {
//            return ((String)obj).getBytes();
//        } else {
//            throw new Exception("RECEAIAHA001");
//        }
//    }
//    
//    /** 
//    * 1. 기능 : Http Servlet service 구현 메소드
//    * 2. 처리 개요 : 
//    *     - 로컬 서비스 호출
//    * 3. 주의사항 
//    *
//    * @param    request Http Servlet Request
//    * @return   response    Http Servlet Response
//    * @exception    Exception   PARAMETER_MESSAGE가 null 이거나 로컬 서비스 호출 중 오류가 발생할 경우
//    **/ 
//    public void service(HttpServletRequest request, HttpServletResponse response) {
//        try {
//        
//            String paramValue = request.getParameter(PARAMETER_MESSAGE);
//            if(paramValue==null) 
//                throw new ServletException("RECEAIAHA002");
//            
//            //byte[] message = StringUtil.hex2Bytes(hexMessage);
//            String message = URLDecoder.decode(paramValue);
//            //logger.info("HttpAdapter] "+this.adapterGroupName+" (RCEV) - "+message); 
//            String[] msgArgs = new String[2];
//            msgArgs[0] = this.adapterGroupName;
//            msgArgs[1] = message;
//            String resMsg = ExceptionUtil.make("RICEAIAHA005", msgArgs);
//            
//            if(logger.isInfo()){
//                logger.info("HttpAdapter] " + resMsg);
//            }
//            
//            Properties prop = new Properties();
//            // 로컬 서비스 호출
//            byte[] result = service(message.getBytes(),prop);
//            if(message != null) {
//                //response.getWriter().print(message);
//                //hexMessage = StringUtil.bytes2Hex(message);
//                paramValue = URLEncoder.encode(new String(result));
//                response.getWriter().print(paramValue);
//            }
//        
//        } catch (Exception e) {
//            logger.error("HttpAdapter] "+adapterGroupName+"-"+adapterName+">>"+e.getMessage(),e);
//            response.setStatus(500);
//            try {
//                response.getWriter().println(e.getMessage());
//                String errCode = ExceptionUtil.getErrorCode(e, "RECEAIAHA003");
//                throw new Exception(errCode);
//            } catch (Exception ex) {
//                // IGNORE
//            }
//        }
//        
//    }
//} 
