Class CompositeLocaleResolver

java.lang.Object
com.oorian.i18n.CompositeLocaleResolver
All Implemented Interfaces:
LocaleResolver

public class CompositeLocaleResolver extends Object implements LocaleResolver
Chains multiple LocaleResolver instances, returning the first non-null result.

Resolvers are tried in the order they were added. The first resolver that returns a non-null locale wins. If all resolvers return null, this resolver also returns null, allowing LocaleConfiguration to apply its default.

Typical configuration (session override with Accept-Language fallback):


 CompositeLocaleResolver resolver = new CompositeLocaleResolver();
 resolver.addResolver(new SessionLocaleResolver());
 resolver.addResolver(new AcceptLanguageLocaleResolver());
 LocaleConfiguration.setLocaleResolver(resolver);
 

URL-based with session and Accept-Language fallback:


 UrlLocaleResolver urlResolver = new UrlLocaleResolver();
 urlResolver.addSupportedLocale(Locale.US);
 urlResolver.addSupportedLocale(Locale.GERMANY);

 CompositeLocaleResolver resolver = new CompositeLocaleResolver();
 resolver.addResolver(urlResolver);
 resolver.addResolver(new SessionLocaleResolver());
 resolver.addResolver(new AcceptLanguageLocaleResolver());
 LocaleConfiguration.setLocaleResolver(resolver);
 
Since:
2.1
Version:
1.0
Author:
Marvin P. Warble Jr.
See Also:
  • Constructor Details

    • CompositeLocaleResolver

      public CompositeLocaleResolver()
      Creates a new composite resolver with no resolvers in the chain.
  • Method Details

    • addResolver

      public CompositeLocaleResolver addResolver(LocaleResolver resolver)
      Adds a resolver to the end of the chain.

      Resolvers are tried in the order they are added. Earlier resolvers have higher priority.

      Parameters:
      resolver - the resolver to add
      Returns:
      this resolver for method chaining
    • resolveLocale

      public Locale resolveLocale(OorianHttpRequest request)
      Tries each resolver in order and returns the first non-null result.
      Specified by:
      resolveLocale in interface LocaleResolver
      Parameters:
      request - the current HTTP request
      Returns:
      the first resolved locale, or null if no resolver could determine one