From 457b4ef02d155e36ec14bd090920c07ff2acbca7 Mon Sep 17 00:00:00 2001 From: SungbinYang Date: Fri, 4 Oct 2024 18:21:56 +0900 Subject: [PATCH] Refactor: Extract duplicate Locale logic and use Optional for null checks --- .../servlet/i18n/SessionLocaleResolver.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java index b1bff28629f..d88a32b96a1 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/SessionLocaleResolver.java @@ -17,6 +17,7 @@ package org.springframework.web.servlet.i18n; import java.util.Locale; +import java.util.Optional; import java.util.TimeZone; import java.util.function.Function; @@ -57,6 +58,7 @@ * * @author Juergen Hoeller * @author Vedran Pavic + * @author Sungbin Yang * @since 27.02.2003 * @see #setDefaultLocale * @see #setDefaultTimeZone @@ -95,6 +97,11 @@ public class SessionLocaleResolver extends AbstractLocaleContextResolver { private Function defaultTimeZoneFunction = request -> getDefaultTimeZone(); + private Locale getLocaleFromRequest(HttpServletRequest request) { + return Optional.ofNullable((Locale) WebUtils.getSessionAttribute(request, this.localeAttributeName)) + .orElse(this.defaultLocaleFunction.apply(request)); + } + /** * Specify the name of the corresponding attribute in the {@code HttpSession}, * holding the current {@link Locale} value. @@ -148,11 +155,7 @@ public void setDefaultTimeZoneFunction(Function de @Override public Locale resolveLocale(HttpServletRequest request) { - Locale locale = (Locale) WebUtils.getSessionAttribute(request, this.localeAttributeName); - if (locale == null) { - locale = this.defaultLocaleFunction.apply(request); - } - return locale; + return getLocaleFromRequest(request); } @Override @@ -160,27 +163,20 @@ public LocaleContext resolveLocaleContext(final HttpServletRequest request) { return new TimeZoneAwareLocaleContext() { @Override public Locale getLocale() { - Locale locale = (Locale) WebUtils.getSessionAttribute(request, localeAttributeName); - if (locale == null) { - locale = defaultLocaleFunction.apply(request); - } - return locale; + return getLocaleFromRequest(request); } @Override @Nullable public TimeZone getTimeZone() { - TimeZone timeZone = (TimeZone) WebUtils.getSessionAttribute(request, timeZoneAttributeName); - if (timeZone == null) { - timeZone = defaultTimeZoneFunction.apply(request); - } - return timeZone; + return Optional.ofNullable((TimeZone) WebUtils.getSessionAttribute(request, timeZoneAttributeName)) + .orElse(defaultTimeZoneFunction.apply(request)); } }; } @Override public void setLocaleContext(HttpServletRequest request, @Nullable HttpServletResponse response, - @Nullable LocaleContext localeContext) { + @Nullable LocaleContext localeContext) { Locale locale = null; TimeZone timeZone = null;