CookieLocaleResolver is RFC6265 and language tag compliant by default
Like CookieLocaleResolver, LocaleChangeInterceptor parses both locale formats by default now. Since it does not need to render the locale, its languageTagCompliant property is not relevant anymore at all. The parseLocale method in StringUtils validates the locale value now and turns an empty locale into null, compatible with parseLocaleString behavior and in particular aligned with web locale parsing needs. Issue: SPR-16700 Issue: SPR-16651
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -83,7 +83,7 @@ public class CookieLocaleResolverTests {
|
||||
@Test
|
||||
public void testResolveLocaleContextWithInvalidLocale() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
Cookie cookie = new Cookie("LanguageKoekje", "n-x GMT+1");
|
||||
Cookie cookie = new Cookie("LanguageKoekje", "++ GMT+1");
|
||||
request.setCookies(cookie);
|
||||
|
||||
CookieLocaleResolver resolver = new CookieLocaleResolver();
|
||||
@@ -94,7 +94,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
catch (IllegalStateException ex) {
|
||||
assertTrue(ex.getMessage().contains("LanguageKoekje"));
|
||||
assertTrue(ex.getMessage().contains("n-x GMT+1"));
|
||||
assertTrue(ex.getMessage().contains("++ GMT+1"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ public class CookieLocaleResolverTests {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.GERMAN);
|
||||
request.setAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE, new ServletException());
|
||||
Cookie cookie = new Cookie("LanguageKoekje", "n-x GMT+1");
|
||||
Cookie cookie = new Cookie("LanguageKoekje", "++ GMT+1");
|
||||
request.setCookies(cookie);
|
||||
|
||||
CookieLocaleResolver resolver = new CookieLocaleResolver();
|
||||
@@ -246,7 +246,7 @@ public class CookieLocaleResolverTests {
|
||||
assertEquals(null, cookie.getDomain());
|
||||
assertEquals(CookieLocaleResolver.DEFAULT_COOKIE_PATH, cookie.getPath());
|
||||
assertFalse(cookie.getSecure());
|
||||
assertEquals("de_AT", cookie.getValue());
|
||||
assertEquals("de-AT", cookie.getValue());
|
||||
|
||||
request = new MockHttpServletRequest();
|
||||
request.setCookies(cookie);
|
||||
@@ -258,12 +258,12 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetAndResolveLocaleWithCountryAsLanguageTag() {
|
||||
public void testSetAndResolveLocaleWithCountryAsLegacyJava() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
CookieLocaleResolver resolver = new CookieLocaleResolver();
|
||||
resolver.setLanguageTagCompliant(true);
|
||||
resolver.setLanguageTagCompliant(false);
|
||||
resolver.setLocale(request, response, new Locale("de", "AT"));
|
||||
|
||||
Cookie cookie = response.getCookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME);
|
||||
@@ -272,13 +272,12 @@ public class CookieLocaleResolverTests {
|
||||
assertEquals(null, cookie.getDomain());
|
||||
assertEquals(CookieLocaleResolver.DEFAULT_COOKIE_PATH, cookie.getPath());
|
||||
assertFalse(cookie.getSecure());
|
||||
assertEquals("de-AT", cookie.getValue());
|
||||
assertEquals("de_AT", cookie.getValue());
|
||||
|
||||
request = new MockHttpServletRequest();
|
||||
request.setCookies(cookie);
|
||||
|
||||
resolver = new CookieLocaleResolver();
|
||||
resolver.setLanguageTagCompliant(true);
|
||||
Locale loc = resolver.resolveLocale(request);
|
||||
assertEquals("de", loc.getLanguage());
|
||||
assertEquals("AT", loc.getCountry());
|
||||
@@ -315,7 +314,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveLocaleWithoutCookie() throws Exception {
|
||||
public void testResolveLocaleWithoutCookie() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
|
||||
@@ -326,7 +325,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveLocaleContextWithoutCookie() throws Exception {
|
||||
public void testResolveLocaleContextWithoutCookie() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
|
||||
@@ -339,7 +338,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveLocaleWithoutCookieAndDefaultLocale() throws Exception {
|
||||
public void testResolveLocaleWithoutCookieAndDefaultLocale() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
|
||||
@@ -351,7 +350,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveLocaleContextWithoutCookieAndDefaultLocale() throws Exception {
|
||||
public void testResolveLocaleContextWithoutCookieAndDefaultLocale() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
|
||||
@@ -366,7 +365,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveLocaleWithCookieWithoutLocale() throws Exception {
|
||||
public void testResolveLocaleWithCookieWithoutLocale() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, "");
|
||||
@@ -379,7 +378,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolveLocaleContextWithCookieWithoutLocale() throws Exception {
|
||||
public void testResolveLocaleContextWithCookieWithoutLocale() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, "");
|
||||
@@ -394,7 +393,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetLocaleToNull() throws Exception {
|
||||
public void testSetLocaleToNull() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, Locale.UK.toString());
|
||||
@@ -414,7 +413,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetLocaleContextToNull() throws Exception {
|
||||
public void testSetLocaleContextToNull() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, Locale.UK.toString());
|
||||
@@ -436,7 +435,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetLocaleToNullWithDefault() throws Exception {
|
||||
public void testSetLocaleToNullWithDefault() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, Locale.UK.toString());
|
||||
@@ -457,7 +456,7 @@ public class CookieLocaleResolverTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetLocaleContextToNullWithDefault() throws Exception {
|
||||
public void testSetLocaleContextToNullWithDefault() {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addPreferredLocale(Locale.TAIWAN);
|
||||
Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, Locale.UK.toString());
|
||||
|
||||
Reference in New Issue
Block a user