Compare commits

...

3 Commits

4 changed files with 52 additions and 39 deletions
@@ -6,6 +6,7 @@ import java.math.BigDecimal;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
@@ -366,20 +367,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
switch (HttpMethodType.getValue(rmethod)) { switch (HttpMethodType.getValue(rmethod)) {
case GET: case GET:
case DELETE: case DELETE:
HashMap<String, String> h = getParameters(dataObject); assignGetParam(dataObject, uri, method);
URIBuilder uriBuilder = new URIBuilder(uri);
for (Map.Entry<String, String> entry : h.entrySet()) {
uriBuilder.addParameter(entry.getKey(), entry.getValue());
}
URI fullUri = uriBuilder.build();
if (method instanceof HttpGet) {
((HttpGet) method).setUri(fullUri);
} else if (method instanceof HttpDelete) {
((HttpDelete) method).setUri(fullUri);
}
if (logger.isDebug()) {
logger.debug("HttpClientAdapterServiceRest] (get Method) QueryString = [" + fullUri.getQuery() + "]");
}
break; break;
case PUT: case PUT:
case POST: case POST:
@@ -395,6 +383,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
} }
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("HttpClientAdapterServiceRest] Request URI : " + method.getRequestUri());
logger.debug("HttpClientAdapterServiceRest] SEND (" + vo.getAdapterGroupName() + ") method.getParams()=[" logger.debug("HttpClientAdapterServiceRest] SEND (" + vo.getAdapterGroupName() + ") method.getParams()=["
+ method.getEntity() + "] "); + method.getEntity() + "] ");
} }
@@ -403,7 +392,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
// 전달 header 셋팅 // 전달 header 셋팅
// Adapter 레벨 header 보다 data로 넘어온 httpHeader를 우선 적용(header명이 같다면 덮어씀) // Adapter 레벨 header 보다 data로 넘어온 httpHeader를 우선 적용(header명이 같다면 덮어씀)
assignRequestHeaders(method, httpHeader, prop); assignRequestHeaders(method, httpHeader, prop, tempProp);
int status = -1; int status = -1;
@@ -716,6 +705,24 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
} }
} }
private void assignGetParam(Object dataObject, String uri, HttpUriRequestBase method)
throws Exception, URISyntaxException {
HashMap<String, String> h = getParameters(dataObject);
URIBuilder uriBuilder = new URIBuilder(uri);
for (Map.Entry<String, String> entry : h.entrySet()) {
uriBuilder.addParameter(entry.getKey(), entry.getValue());
}
URI fullUri = uriBuilder.build();
if (method instanceof HttpGet) {
((HttpGet) method).setUri(fullUri);
} else if (method instanceof HttpDelete) {
((HttpDelete) method).setUri(fullUri);
}
if (logger.isDebug()) {
logger.debug("HttpClientAdapterServiceRest] (get Method) QueryString = [" + fullUri.getQuery() + "]");
}
}
private void assignOutboundPropertyMap(Properties tempProp, int status, String responseString, private void assignOutboundPropertyMap(Properties tempProp, int status, String responseString,
Properties responseHeaderProp) { Properties responseHeaderProp) {
Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
@@ -896,7 +903,7 @@ public class HttpClient5AdapterServiceRest extends HttpClient5AdapterServiceSupp
return false; return false;
} }
protected void assignRequestHeaders(HttpUriRequestBase method, Object httpHeader, Properties prop) { protected void assignRequestHeaders(HttpUriRequestBase method, Object httpHeader, Properties prop, Properties tempProp) {
if (httpHeader != null) { if (httpHeader != null) {
if ( httpHeader instanceof ObjectNode) { if ( httpHeader instanceof ObjectNode) {
ObjectNode objectNode = (ObjectNode) httpHeader; ObjectNode objectNode = (ObjectNode) httpHeader;
@@ -213,6 +213,10 @@ public class HttpAdapterServiceStandard extends HttpAdapterServiceSupport
stopWatch.stop(); stopWatch.stop();
String apiInternalErrorCode = prop.getProperty("API_INTERNAL_ERROR_CODE", "");
if(StringUtils.isNotEmpty(apiInternalErrorCode))
response.setStatus(500);
byte[] responseBytes = null; byte[] responseBytes = null;
String responseData = ""; String responseData = "";
if (RESPONSE_TYPE_ASYNC.equals(responseType)){ if (RESPONSE_TYPE_ASYNC.equals(responseType)){
@@ -242,15 +242,16 @@ public class AccessTokenManagerByDB implements Lifecycle {
@Override @Override
public AccessTokenVO apply(AccessTokenVO accessToken) { public AccessTokenVO apply(AccessTokenVO accessToken) {
long intervalTime = System.currentTimeMillis() + (credential.getIntervalSec() * 1000); long intervalTime = System.currentTimeMillis() + (credential.getIntervalSec() * 1000);
// // 토큰이 없거나, 다음 스케줄 시간 전에 만료될 경우 재발급 // // 토큰이 없거나, 다음 스케줄 시간 전에 만료될 경우 재발급
if (accessToken == null) { if (accessToken == null) {
logger.debug("Token not exists for adapter group: {}", adapterGroupName);
return issueToken(credential); return issueToken(credential);
} else if(accessToken.getExpiration() != null) { } else if(accessToken.getExpiration() != null) {
// 토큰이 있고 만료시간이 설정 된 경우 // 토큰이 있고 만료시간이 설정 된 경우
if(accessToken.getExpiration().before(new Date(intervalTime))){ if(accessToken.getExpiration().before(new Date(intervalTime))){
// 다음 스케줄 전에 토큰이 만료되는 경우 재발급 // 다음 스케줄 전에 토큰이 만료되는 경우 재발급
logger.debug("Token expired : {}, expiration date: {}", adapterGroupName, accessToken.getExpiration());
return issueToken(credential); return issueToken(credential);
} else { } else {
// 토큰이 아직 유효한 경우 // 토큰이 아직 유효한 경우
@@ -263,10 +264,8 @@ public class AccessTokenManagerByDB implements Lifecycle {
return accessToken; return accessToken;
} }
} }
}); });
logger.debug("Token issuance completed for adapter group: {}", adapterGroupName); logger.debug("Token issuance completed for adapter group: {}", adapterGroupName);
} catch (Exception e) { } catch (Exception e) {
logger.error("Token issuance failed for adapter group: {}", adapterGroupName, e); logger.error("Token issuance failed for adapter group: {}", adapterGroupName, e);
@@ -1,9 +1,9 @@
package com.eactive.eai.common.exception; package com.eactive.eai.common.exception;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.json.simple.JSONValue;
import com.eactive.eai.adapter.AdapterGroupVO; import com.eactive.eai.adapter.AdapterGroupVO;
import com.eactive.eai.adapter.AdapterManager; import com.eactive.eai.adapter.AdapterManager;
@@ -60,6 +60,9 @@ public class ExceptionHandler {
} }
public static EAIMessage handle(EAIMessage eaiMessage) { public static EAIMessage handle(EAIMessage eaiMessage) {
Properties prop = eaiMessage.getCallProp();
prop.setProperty("API_INTERNAL_ERROR_CODE", eaiMessage.getRspErrCd());
String inAdapterGroupName = eaiMessage.getSngSysItfTp(); String inAdapterGroupName = eaiMessage.getSngSysItfTp();
AdapterManager manager = AdapterManager.getInstance(); AdapterManager manager = AdapterManager.getInstance();
AdapterGroupVO group = manager.getAdapterGroupVO(inAdapterGroupName); AdapterGroupVO group = manager.getAdapterGroupVO(inAdapterGroupName);