@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2018 the original author or authors .
* Copyright 2002 - 2019 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -56,7 +56,7 @@ import org.springframework.web.util.WebUtils;
@@ -56,7 +56,7 @@ import org.springframework.web.util.WebUtils;
public class CookieLocaleResolver extends CookieGenerator implements LocaleContextResolver {
/ * *
* The name of the request attribute that holds the Locale .
* The name of the request attribute that holds the { @code Locale } .
* < p > Only used for overriding a cookie value if the locale has been
* changed in the course of the current request !
* < p > Use { @code RequestContext ( Utils ) . getLocale ( ) }
@ -67,7 +67,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -67,7 +67,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
public static final String LOCALE_REQUEST_ATTRIBUTE_NAME = CookieLocaleResolver . class . getName ( ) + ".LOCALE" ;
/ * *
* The name of the request attribute that holds the TimeZone .
* The name of the request attribute that holds the { @code TimeZone } .
* < p > Only used for overriding a cookie value if the locale has been
* changed in the course of the current request !
* < p > Use { @code RequestContext ( Utils ) . getTimeZone ( ) }
@ -85,6 +85,8 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -85,6 +85,8 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
private boolean languageTagCompliant = true ;
private boolean rejectInvalidCookies = true ;
@Nullable
private Locale defaultLocale ;
@ -128,14 +130,36 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -128,14 +130,36 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
/ * *
* Set a fixed Locale that this resolver will return if no cookie found .
* Specify whether to reject cookies with invalid content ( e . g . invalid format ) .
* < p > The default is { @code true } . Turn this off for lenient handling of parse
* failures , falling back to the default locale and time zone in such a case .
* @since 5 . 1 . 7
* @see # setDefaultLocale
* @see # setDefaultTimeZone
* @see # determineDefaultLocale
* @see # determineDefaultTimeZone
* /
public void setRejectInvalidCookies ( boolean rejectInvalidCookies ) {
this . rejectInvalidCookies = rejectInvalidCookies ;
}
/ * *
* Return whether to reject cookies with invalid content ( e . g . invalid format ) .
* @since 5 . 1 . 7
* /
public boolean isRejectInvalidCookies ( ) {
return this . rejectInvalidCookies ;
}
/ * *
* Set a fixed locale that this resolver will return if no cookie found .
* /
public void setDefaultLocale ( @Nullable Locale defaultLocale ) {
this . defaultLocale = defaultLocale ;
}
/ * *
* Return the fixed Locale that this resolver will return if no cookie found ,
* Return the fixed l ocale that this resolver will return if no cookie found ,
* if any .
* /
@Nullable
@ -144,7 +168,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -144,7 +168,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
/ * *
* Set a fixed TimeZ one that this resolver will return if no cookie found .
* Set a fixed time z one that this resolver will return if no cookie found .
* @since 4 . 0
* /
public void setDefaultTimeZone ( @Nullable TimeZone defaultTimeZone ) {
@ -152,7 +176,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -152,7 +176,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
/ * *
* Return the fixed TimeZ one that this resolver will return if no cookie found ,
* Return the fixed time z one that this resolver will return if no cookie found ,
* if any .
* @since 4 . 0
* /
@ -214,16 +238,17 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -214,16 +238,17 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
}
}
catch ( IllegalArgumentException ex ) {
String cookieDescription = "invalid locale cookie '" + cookieName +
"': [" + value + "] due to: " + ex . getMessage ( ) ;
if ( request . getAttribute ( WebUtils . ERROR_EXCEPTION_ATTRIBUTE ) ! = null ) {
// Error dispatch: ignore locale/timezone parse exceptions
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "Ignoring " + cookieDescription ) ;
}
if ( isRejectInvalidCookies ( ) & &
request . getAttribute ( WebUtils . ERROR_EXCEPTION_ATTRIBUTE ) = = null ) {
throw new IllegalStateException ( "Encountered invalid locale cookie '" +
cookieName + "': [" + value + "] due to: " + ex . getMessage ( ) ) ;
}
else {
throw new IllegalStateException ( "Encountered " + cookieDescription ) ;
// Lenient handling (e.g. error dispatch): ignore locale/timezone parse exceptions
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "Ignoring invalid locale cookie '" + cookieName +
"': [" + value + "] due to: " + ex . getMessage ( ) ) ;
}
}
}
if ( logger . isTraceEnabled ( ) ) {
@ -320,7 +345,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
@@ -320,7 +345,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
/ * *
* Determine the default time zone for the given request ,
* Called if no TimeZ one cookie has been found .
* Called if no time z one cookie has been found .
* < p > The default implementation returns the specified default time zone ,
* if any , or { @code null } otherwise .
* @param request the request to resolve the time zone for