mirror of
https://github.com/apache/struts.git
synced 2026-08-31 19:35:40 +00:00
4c94c4f89a
* fix(i18n): ensure request_locale takes precedence over Accept-Language when supportedLocale is configured When supportedLocale was configured on the I18nInterceptor, the Accept-Language header match in AcceptLanguageLocaleHandler.find() returned early before SessionLocaleHandler/CookieLocaleHandler ever checked their explicit locale parameters (request_locale, request_cookie_locale). This made it impossible to switch locale via request parameters when supportedLocale was set. Changes: - Reorder AcceptLanguageLocaleHandler.find() to check request_only_locale before Accept-Language matching - Reorder SessionLocaleHandler.find() to check request_locale before super - Reorder CookieLocaleHandler.find() to check request_cookie_locale before super - Add isLocaleSupported() helper to validate locales against supportedLocale - Filter all locale sources (params, session, cookies) through supportedLocale - Add 4 tests covering the bug scenario and supportedLocale filtering 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test(i18n): cover missing supportedLocale locale-selection paths Add regression tests for unsupported request_cookie_locale fallback, stored cookie revalidation, and request_only_locale precedence to lock in WW-5549 behavior across remaining branches. Co-authored-by: Cursor <cursoragent@cursor.com> * refactor(i18n): extract locale handlers with deprecated inner wrappers Move locale handler implementations into a dedicated interceptor.i18n package with reusable abstract bases, keep thin deprecated inner wrappers in I18nInterceptor for one release-cycle compatibility, and document the LocaleHandler contract. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(i18n): validate request_only_locale against supportedLocale and fix Accept-Language fallback RequestLocaleHandler.find() now checks isLocaleSupported() before returning, preventing unsupported locales from slipping through via the request_only_locale parameter. AcceptLanguageLocaleHandler.find() now returns the first Accept-Language locale when supportedLocale is empty, fixing ACCEPT_LANGUAGE storage mode with no filter configured. Also includes refactoring: deprecated inner classes collapsed with LocaleHandlerAdapter, shouldStore field encapsulated via disableStore(), logger pattern standardized to private static final, and class-level JavaDoc added to handler classes. Made-with: Cursor --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>