게이트웨이 프록시 프로퍼티 true/false 전환

- djb.gateway.use-proxy / token-use-proxy 기본값 Y → true
- parseBool 헬퍼로 true/false 해석, 레거시 Y/N 자동 변환
- 기존 !"N" 비교가 값 "false"를 true로 오판하던 문제 수정

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rinjae
2026-07-10 16:58:54 +09:00
parent 3c103ad3a4
commit 310919130c
@@ -35,8 +35,8 @@ public class DjbTestbedGatewayProperty {
public static final String DEFAULT_BASE_URL = "PortalMock"; public static final String DEFAULT_BASE_URL = "PortalMock";
public static final String DEFAULT_TIMEOUT_SEC = "10"; public static final String DEFAULT_TIMEOUT_SEC = "10";
public static final String DEFAULT_USE_PROXY = "Y"; public static final String DEFAULT_USE_PROXY = "true";
public static final String DEFAULT_TOKEN_USE_PROXY = "Y"; public static final String DEFAULT_TOKEN_USE_PROXY = "true";
private static final int TIMEOUT_FALLBACK_MS = 10_000; private static final int TIMEOUT_FALLBACK_MS = 10_000;
/** GW 모드 실제 토큰 엔드포인트 경로 (DJERP_4000 OAuth 발급가이드 v0.2). */ /** GW 모드 실제 토큰 엔드포인트 경로 (DJERP_4000 OAuth 발급가이드 v0.2). */
public static final String DEFAULT_TOKEN_PATH = "/dj/oauth/token"; public static final String DEFAULT_TOKEN_PATH = "/dj/oauth/token";
@@ -69,21 +69,39 @@ public class DjbTestbedGatewayProperty {
/** /**
* 테스트베드 API 호출 시 서버 프록시({@code /api/call-api}) 사용 여부. * 테스트베드 API 호출 시 서버 프록시({@code /api/call-api}) 사용 여부.
* {@code N} 이면 브라우저에서 대상 주소로 직접 호출(CORS 허용 필요). 기본 Y. * {@code false} 이면 브라우저에서 대상 주소로 직접 호출(CORS 허용 필요). 기본 true.
*/ */
public boolean useProxy() { public boolean useProxy() {
return !"N".equalsIgnoreCase(resolve(KEY_USE_PROXY, DEFAULT_USE_PROXY, return parseBool(resolve(KEY_USE_PROXY, DEFAULT_USE_PROXY,
"테스트베드 API 호출 시 서버 프록시(/api/call-api) 사용 여부(Y/N). N 이면 브라우저에서 직접 호출.")); "테스트베드 API 호출 시 서버 프록시(/api/call-api) 사용 여부(true/false). false 이면 브라우저에서 직접 호출."), true);
} }
/** /**
* 토큰 발급 시 서버 프록시({@code /api/call-api}) 사용 여부. API 호출 프록시와 별개로 설정. * 토큰 발급 시 서버 프록시({@code /api/call-api}) 사용 여부. API 호출 프록시와 별개로 설정.
* {@code N} 이면 브라우저에서 토큰 URL 로 직접 호출(CORS 허용 필요). 기본 Y. * {@code false} 이면 브라우저에서 토큰 URL 로 직접 호출(CORS 허용 필요). 기본 true.
* (mock 모드는 포탈 자체 mock 토큰이라 프록시 유지가 자연스럽고, 실 GW 는 직접호출로 뺄 수 있음.) * (mock 모드는 포탈 자체 mock 토큰이라 프록시 유지가 자연스럽고, 실 GW 는 직접호출로 뺄 수 있음.)
*/ */
public boolean tokenUseProxy() { public boolean tokenUseProxy() {
return !"N".equalsIgnoreCase(resolve(KEY_TOKEN_USE_PROXY, DEFAULT_TOKEN_USE_PROXY, return parseBool(resolve(KEY_TOKEN_USE_PROXY, DEFAULT_TOKEN_USE_PROXY,
"테스트베드 토큰 발급 시 서버 프록시(/api/call-api) 사용 여부(Y/N). N 이면 브라우저에서 직접 호출.")); "테스트베드 토큰 발급 시 서버 프록시(/api/call-api) 사용 여부(true/false). false 이면 브라우저에서 직접 호출."), true);
}
/**
* 프로퍼티 값을 boolean 으로 해석. 레거시 {@code Y/N} 값도 자동 변환한다.
* {@code true}/{@code Y} → true, {@code false}/{@code N} → false, 그 외/null → {@code def}.
*/
private static boolean parseBool(String v, boolean def) {
if (v == null) {
return def;
}
String s = v.trim();
if (s.equalsIgnoreCase("true") || s.equalsIgnoreCase("Y")) {
return true;
}
if (s.equalsIgnoreCase("false") || s.equalsIgnoreCase("N")) {
return false;
}
return def;
} }
/** 테스트베드 프록시 연결/응답 타임아웃(ms). 미설정/파싱 실패 시 10초. (단위 저장: 초) */ /** 테스트베드 프록시 연결/응답 타임아웃(ms). 미설정/파싱 실패 시 10초. (단위 저장: 초) */