Merge pull request #2979 from cainj13/localeNpeFix
make locale retrieval null-safe
This commit is contained in:
commit
fa312fb3db
2 changed files with 38 additions and 13 deletions
|
@ -135,21 +135,23 @@ public class LocaleHelper {
|
|||
|
||||
private static Locale findLocale(Set<String> supportedLocales, String... localeStrings) {
|
||||
for (String localeString : localeStrings) {
|
||||
Locale result = null;
|
||||
Locale search = Locale.forLanguageTag(localeString);
|
||||
for (String languageTag : supportedLocales) {
|
||||
Locale locale = Locale.forLanguageTag(languageTag);
|
||||
if (locale.getLanguage().equals(search.getLanguage())) {
|
||||
if (locale.getCountry().equals("") && result == null) {
|
||||
result = locale;
|
||||
}
|
||||
if (locale.getCountry().equals(search.getCountry())) {
|
||||
return locale;
|
||||
if (localeString != null) {
|
||||
Locale result = null;
|
||||
Locale search = Locale.forLanguageTag(localeString);
|
||||
for (String languageTag : supportedLocales) {
|
||||
Locale locale = Locale.forLanguageTag(languageTag);
|
||||
if (locale.getLanguage().equals(search.getLanguage())) {
|
||||
if (locale.getCountry().equals("") && result == null) {
|
||||
result = locale;
|
||||
}
|
||||
if (locale.getCountry().equals(search.getCountry())) {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (result != null) {
|
||||
return result;
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package org.keycloak.services.util;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.core.IsNull.nullValue;
|
||||
|
||||
public class LocaleHelperTest {
|
||||
|
||||
@Test
|
||||
public void shouldNotExceptionOnNullLocaleAttributeItem() throws Exception {
|
||||
final Method method = LocaleHelper.class.getDeclaredMethod("findLocale", Set.class, String[].class);
|
||||
method.setAccessible(true);
|
||||
Locale foundLocale = (Locale) method.invoke(null, Stream.of("en", "es", "fr").collect(Collectors.toSet()), new String[]{null});
|
||||
assertThat(foundLocale, nullValue());
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue