From 310919130cd2166582f5ede515c98f91f78332cf Mon Sep 17 00:00:00 2001 From: Rinjae Date: Fri, 10 Jul 2026 16:58:54 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=8C=EC=9D=B4=ED=8A=B8=EC=9B=A8=EC=9D=B4?= =?UTF-8?q?=20=ED=94=84=EB=A1=9D=EC=8B=9C=20=ED=94=84=EB=A1=9C=ED=8D=BC?= =?UTF-8?q?=ED=8B=B0=20true/false=20=EC=A0=84=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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) --- .../config/DjbTestbedGatewayProperty.java | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/eactive/apim/portal/djb/testbed/config/DjbTestbedGatewayProperty.java b/src/main/java/com/eactive/apim/portal/djb/testbed/config/DjbTestbedGatewayProperty.java index dc6dbee..836ab16 100644 --- a/src/main/java/com/eactive/apim/portal/djb/testbed/config/DjbTestbedGatewayProperty.java +++ b/src/main/java/com/eactive/apim/portal/djb/testbed/config/DjbTestbedGatewayProperty.java @@ -35,8 +35,8 @@ public class DjbTestbedGatewayProperty { public static final String DEFAULT_BASE_URL = "PortalMock"; public static final String DEFAULT_TIMEOUT_SEC = "10"; - public static final String DEFAULT_USE_PROXY = "Y"; - public static final String DEFAULT_TOKEN_USE_PROXY = "Y"; + public static final String DEFAULT_USE_PROXY = "true"; + public static final String DEFAULT_TOKEN_USE_PROXY = "true"; private static final int TIMEOUT_FALLBACK_MS = 10_000; /** GW 모드 실제 토큰 엔드포인트 경로 (DJERP_4000 OAuth 발급가이드 v0.2). */ public static final String DEFAULT_TOKEN_PATH = "/dj/oauth/token"; @@ -69,21 +69,39 @@ public class DjbTestbedGatewayProperty { /** * 테스트베드 API 호출 시 서버 프록시({@code /api/call-api}) 사용 여부. - * {@code N} 이면 브라우저에서 대상 주소로 직접 호출(CORS 허용 필요). 기본 Y. + * {@code false} 이면 브라우저에서 대상 주소로 직접 호출(CORS 허용 필요). 기본 true. */ public boolean useProxy() { - return !"N".equalsIgnoreCase(resolve(KEY_USE_PROXY, DEFAULT_USE_PROXY, - "테스트베드 API 호출 시 서버 프록시(/api/call-api) 사용 여부(Y/N). N 이면 브라우저에서 직접 호출.")); + return parseBool(resolve(KEY_USE_PROXY, DEFAULT_USE_PROXY, + "테스트베드 API 호출 시 서버 프록시(/api/call-api) 사용 여부(true/false). false 이면 브라우저에서 직접 호출."), true); } /** * 토큰 발급 시 서버 프록시({@code /api/call-api}) 사용 여부. API 호출 프록시와 별개로 설정. - * {@code N} 이면 브라우저에서 토큰 URL 로 직접 호출(CORS 허용 필요). 기본 Y. + * {@code false} 이면 브라우저에서 토큰 URL 로 직접 호출(CORS 허용 필요). 기본 true. * (mock 모드는 포탈 자체 mock 토큰이라 프록시 유지가 자연스럽고, 실 GW 는 직접호출로 뺄 수 있음.) */ public boolean tokenUseProxy() { - return !"N".equalsIgnoreCase(resolve(KEY_TOKEN_USE_PROXY, DEFAULT_TOKEN_USE_PROXY, - "테스트베드 토큰 발급 시 서버 프록시(/api/call-api) 사용 여부(Y/N). N 이면 브라우저에서 직접 호출.")); + return parseBool(resolve(KEY_TOKEN_USE_PROXY, DEFAULT_TOKEN_USE_PROXY, + "테스트베드 토큰 발급 시 서버 프록시(/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초. (단위 저장: 초) */