public class LocaleConfiguration {
- Locale defaultLocale;
+ String defaultLocale;
- private final List<Locale> allowedLocales = new ArrayList<Locale>();
+ private final List<String> allowedLocales = new ArrayList<String>();
- public LocaleConfiguration(final Locale defaultLocale,
- final Locale... allowedLocales) {
+ public LocaleConfiguration(final String defaultLocale,
+ final String... allowedLocales) {
this.defaultLocale = defaultLocale;
- for (final Locale locale : allowedLocales)
- this.getAllowedLocales().add(locale);
+ for (final String locale : allowedLocales)
+ getAllowedLocales().add(locale);
}
- public Locale detectCurrentLocale(final HttpServletRequest request) {
+ public String detectCurrentLocale(final HttpServletRequest request) {
final String sessionLocaleString = (String) request.getSession()
.getAttribute("locale");
- Locale result = localeFromString(sessionLocaleString);
- if (result == null)
- result = defaultLocale;
+ String result = defaultLocale;
+ if (isAllowedLocale(sessionLocaleString))
+ result = sessionLocaleString;
- final Locale requestLocale = localeFromString(request
- .getParameter("locale"));
- if (requestLocale != null)
+ final String requestLocale = request.getParameter("locale");
+
+ if (isAllowedLocale(requestLocale))
result = requestLocale;
- request.getSession().setAttribute("locale", result.asString());
+ request.getSession().setAttribute("locale", result);
return result;
}
- private Locale localeFromString(final String localeString) {
- for (final Locale locale : getAllowedLocales())
- if (locale.asString().equals(localeString))
- return locale;
-
- return null;
+ public List<String> getAllowedLocales() {
+ return allowedLocales;
}
- public List<Locale> getAllowedLocales() {
- return allowedLocales;
+ public boolean isAllowedLocale(final String locale) {
+ return allowedLocales.contains(locale);
}
}