WW-4722 Extracts logic to store locale in cookie into a method
Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/8971b508 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/8971b508 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/8971b508 Branch: refs/heads/master Commit: 8971b5081055bd309f715aad63fd96825154c3f8 Parents: 6457f00 Author: Lukasz Lenart <lukaszlen...@apache.org> Authored: Thu Dec 1 17:25:33 2016 +0100 Committer: Lukasz Lenart <lukaszlen...@apache.org> Committed: Thu Dec 1 17:25:33 2016 +0100 ---------------------------------------------------------------------- .../struts2/interceptor/I18nInterceptor.java | 28 +++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/8971b508/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java index 02409c4..cfed10a 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java @@ -234,20 +234,18 @@ public class I18nInterceptor extends AbstractInterceptor { */ protected Locale readStoredLocale(ActionInvocation invocation, Map<String, Object> session) { Locale locale = this.readStoredLocalFromSession(invocation, session); - if (locale != null) { + LOG.debug("Found stored Locale {} in session, using it!", locale); return locale; } - Cookie[] cookies = ServletActionContext.getRequest().getCookies(); - if (cookies != null) { - for (Cookie cookie : cookies) { - if (DEFAULT_COOKIE_ATTRIBUTE.equals(cookie.getName())) { - return getLocaleFromParam(cookie.getValue()); - } - } + Locale cookie = readStoredLocaleFromCookie(invocation); + if (cookie != null) { + LOG.debug("Found stored Locale {} in cookies, using it!", locale); + return cookie; } + LOG.debug("Neither locale was in session nor in cookies, searching current Invocation context"); return this.readStoredLocalFromCurrentInvocation(invocation); } @@ -283,7 +281,7 @@ public class I18nInterceptor extends AbstractInterceptor { return locale; } - protected Locale readStoredLocalFromSession(ActionInvocation invocation, Map<String, Object> session) { + protected Locale readStoredLocalFromSession(ActionInvocation ignore, Map<String, Object> session) { // check session for saved locale Object sessionLocale = session.get(attributeName); if (sessionLocale != null && sessionLocale instanceof Locale) { @@ -294,6 +292,18 @@ public class I18nInterceptor extends AbstractInterceptor { return null; } + protected Locale readStoredLocaleFromCookie(ActionInvocation ignore) { + Cookie[] cookies = ServletActionContext.getRequest().getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + if (DEFAULT_COOKIE_ATTRIBUTE.equals(cookie.getName())) { + return getLocaleFromParam(cookie.getValue()); + } + } + } + return null; + } + protected Locale readStoredLocalFromCurrentInvocation(ActionInvocation invocation) { // no overriding locale definition found, stay with current invocation (=browser) locale Locale locale = invocation.getInvocationContext().getLocale();