Skip to content

Commit 507d4ba

Browse files
committed
StringUtils.parseLocale consistently handles invalid locale values
Closes gh-22603
1 parent 8d7676a commit 507d4ba

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

spring-core/src/main/java/org/springframework/util/StringUtils.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,9 @@ public static Locale parseLocale(String localeValue) {
774774
if (tokens.length == 1) {
775775
validateLocalePart(localeValue);
776776
Locale resolved = Locale.forLanguageTag(localeValue);
777-
return (resolved.getLanguage().length() > 0 ? resolved : null);
777+
if (resolved.getLanguage().length() > 0) {
778+
return resolved;
779+
}
778780
}
779781
return parseLocaleTokens(localeValue, tokens);
780782
}

spring-core/src/test/java/org/springframework/util/StringUtilsTests.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2018 the original author or authors.
2+
* Copyright 2002-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -765,4 +765,20 @@ public void testAvailableLocalesWithLanguageTag() {
765765
}
766766
}
767767

768+
@Test
769+
public void testInvalidLocaleWithLocaleString() {
770+
assertEquals(new Locale("invalid"), StringUtils.parseLocaleString("invalid"));
771+
assertEquals(new Locale("invalidvalue"), StringUtils.parseLocaleString("invalidvalue"));
772+
assertEquals(new Locale("invalidvalue", "foo"), StringUtils.parseLocaleString("invalidvalue_foo"));
773+
assertNull(StringUtils.parseLocaleString(""));
774+
}
775+
776+
@Test
777+
public void testInvalidLocaleWithLanguageTag() {
778+
assertEquals(new Locale("invalid"), StringUtils.parseLocale("invalid"));
779+
assertEquals(new Locale("invalidvalue"), StringUtils.parseLocale("invalidvalue"));
780+
assertEquals(new Locale("invalidvalue", "foo"), StringUtils.parseLocale("invalidvalue_foo"));
781+
assertNull(StringUtils.parseLocale(""));
782+
}
783+
768784
}

0 commit comments

Comments
 (0)