//
//package com.eactive.eai.adapter.http.client.impl;
//
//import com.eactive.eai.adapter.http.HttpMemoryLogger;
//import com.eactive.eai.adapter.http.HttpStatusException;
//import com.eactive.eai.adapter.http.client.HttpClientAdapterServiceSupport;
//import com.eactive.eai.adapter.http.client.HttpClientAdapterVO;
//import com.eactive.eai.common.exception.ExceptionUtil;
//import com.eactive.eai.common.util.CommonLib;
//import org.apache.commons.httpclient.HttpClient;
//import org.apache.commons.httpclient.HttpStatus;
//import org.apache.commons.httpclient.HttpVersion;
//import org.apache.commons.httpclient.methods.PostMethod;
//
//import java.net.ConnectException;
//import java.net.SocketTimeoutException;
//import java.util.Properties;
//
//
///** 
//* 1. 기능 : EAI HTTP OutBound 용 어댑터로 수동 시스템의 HTTP 웹 컴포넌트를 
//*           GET/POST 방식으로 호출할 수 있는 기능을 제공한다.
//* 2. 처리 개요 : 
//* *     - 2009.11.24 retry 로직 제거  : 요청
//* 3. 주의사항 
//*
//* @author  : 
//* @version : v 1.0.0
//* @see : WLIAdapterFactory.java, WLIAdapter.java, WLIDefaultAdapter.java
//* @since   : 
//
//*/
//public class HttpClientAdapterServiceChangedate extends HttpClientAdapterServiceSupport{ 
//    
//    /** 
//    * 1. 기능 :  전문과 같은 Raw Data 통신에 사용
//    * 2. 처리 개요 : 
//    *     - 속성 정보를 설정 하고 수동 시스템 서비스를 호출 한다.
//    * 3. 주의사항 
//    *
//    * @param    prop    Http Adapter 속성 정보
//    * @param    message 송신 전문
//    * @return   반환 된 byte[] Object
//    * @exception    Exception 수동 시스템 간 통신 중 발생
//    **/
//	public Object execute(Properties prop, byte[] data, Properties tempProp) throws Exception {
//
//		HttpClientAdapterVO vo = super.setting(prop, tempProp);
//
//		if (logger.isDebug() && "N".equals(vo.getTestCallYn())) {
//			logger.debug("HttpClientAdapterServiceChangedate] SEND (" + vo.getMethod() + ") ");
//		}
//		PostMethod method = new PostMethod(vo.getUrl());
//		if (vo.getTimeout() > -1) {
//			method.getParams().setSoTimeout(vo.getTimeout());
//		}
//        HttpClient mclient = this.client;
//        if ( vo.getConnectionTimeout() != 0){
//        	mclient.getParams().setParameter("http.connection.timeout", vo.getConnectionTimeout());
//        }
//        method.getParams().setParameter("http.protocol.version", HttpVersion.HTTP_1_0);
//        
//		// Data Size : 15 Bytes
//		int popupMinSize = 15;
//
//		String req  = "";
//		String date = "";
//		
//		if (data.length >= popupMinSize) {
//			if (vo.getEncode() != null && vo.getEncode().length() > 0) {
//				if (logger.isDebug()) {
//					logger.debug("HttpClientAdapterServiceChangedate] ENCODE(" + vo.getEncode() + ") ");
//				}
//				req  = new String(data, 0, 7, vo.getEncode()).trim();
//				date = new String(data, 7, 8, vo.getEncode());
//			} else {
//				req  = new String(data, 0, 7 ).trim();
//				date = new String(data, 7, 8 );
//			}
//			method.addParameter("req",  req);
//			method.addParameter("date", date);
//			
//		} else {
//			if (logger.isError()) {
//				logger.error("HttpClientAdapterServiceChangedate] Invalid Data Length (" + data.length + ") < "
//						+ popupMinSize);
//			}
//			throw new Exception("HttpClientAdapterServiceChangedate Error : MessageSize(" + (data.length)
//					+ " Bytes) too small < " + popupMinSize);
//		}
//
//		int status = -1;
//
//		try {
//    		if (vo.getTraceLevel() >= 3){
//				HttpMemoryLogger.txlog(vo.getAdapterGroupName()+vo.getAdapterName(), 
//						  "[req]"+ req + "\n"
//						+ "[date]" + date + "\n"
//						+ "SEND ["+new String(data)+"]"+CommonLib.getDumpMessage(data) +"\n"
//						);
//    		}    
//         	//mclient.getHttpConnectionManager().getParams().setConnectionTimeout(30000);
//         	//mclient.getParams().setContentCharset("EUC_KR");
//			status = mclient.executeMethod(method);
//            //status 200(정상) 이외에는 error 처리 
//            if (status !=200){
//            	try{
//            		logger.error("HttpClientAdapterServiceChangedate] receive status["+status+"] data[" + new String(method.getResponseBody()) +"]");
//            	}catch(Exception e){
//            		logger.error(e);
//            	}
//               	throw new HttpStatusException("수신시스템을 확인하세요. HTTP 에러[ " + status + "] adapterName="+vo.getAdapterGroupName()+"."+vo.getAdapterName(),status);
//            }
//			byte[] responseMessage = method.getResponseBody();
//    		if (vo.getTraceLevel() >= 3){
//   				HttpMemoryLogger.txlog(vo.getAdapterGroupName()+vo.getAdapterName(), "RECV ["+new String(responseMessage)+"]"+CommonLib.getDumpMessage(responseMessage) );
//    		}    
//			return responseMessage;
//
//		} catch (SocketTimeoutException ste) { // Read Timeout :: HttpClient// 3.1일 경우
//    		if (vo.getTraceLevel() >= 3){
//    			HttpMemoryLogger.error(vo.getAdapterGroupName()+vo.getAdapterName(),"HttpClientAdapterServiceChangedate] SocketTimeoutException : " + ste.toString() ,ste);
//    		}        	
//            if (logger.isError()){
//            	logger.error("HttpClientAdapterServiceChangedate] SocketTimeoutException : " + ste.toString() ,ste);
//            }
//            throw ste;
//        } catch(ConnectException ce) {
//    		if (vo.getTraceLevel() >= 3){
//    			HttpMemoryLogger.error(vo.getAdapterGroupName()+vo.getAdapterName(),"HttpClientAdapterServiceChangedate] Connection Exception : " + ce.toString() ,ce);
//    		}        	
//            if (logger.isError()){
//            	logger.error("HttpClientAdapterServiceChangedate] Connection Exception : " + ce.toString() ,ce);
//            }
//            throw ce;
//        } catch(Exception e) {
//    		if (vo.getTraceLevel() >= 3){
//    			HttpMemoryLogger.error(vo.getAdapterGroupName()+vo.getAdapterName(),"HttpClientAdapterServiceChangedate] Exception : " + e.toString() ,e);
//    		}        	
//            if (logger.isError()){
//            	logger.error("HttpClientAdapterServiceChangedate] Exception : " + e.toString() ,e);
//            }
//            throw e;
//		} finally {
//			method.releaseConnection();
//			if (status != HttpStatus.SC_OK) {
//				String[] msgArgs = new String[1];
//				msgArgs[0] = String.valueOf(status);
//				String resMsg = ExceptionUtil.make("RDCEAIAHA013", msgArgs);
//				if (logger.isDebug()) {
//					logger.debug(resMsg);
//				}
//			}
//		}
//	}
//
//} 
