org.springframework.context.i18n
Class LocaleContextHolder

java.lang.Object
  extended by org.springframework.context.i18n.LocaleContextHolder

public abstract class LocaleContextHolder
extends java.lang.Object

Simple holder class that associates a LocaleContext instance with the current thread. The LocaleContext will be inherited by any child threads spawned by the current thread if the inheritable flag is set to true.

Used as a central holder for the current Locale in Spring, wherever necessary: for example, in MessageSourceAccessor. DispatcherServlet automatically exposes its current Locale here. Other applications can expose theirs too, to make classes like MessageSourceAccessor automatically use that Locale.

Since:
1.2
Author:
Juergen Hoeller
See Also:
LocaleContext, MessageSourceAccessor, DispatcherServlet

Field Summary
private static java.lang.ThreadLocal<LocaleContext> inheritableLocaleContextHolder
           
private static java.lang.ThreadLocal<LocaleContext> localeContextHolder
           
 
Constructor Summary
LocaleContextHolder()
           
 
Method Summary
static java.util.Locale getLocale()
          Return the Locale associated with the current thread, if any, or the system default Locale else.
static LocaleContext getLocaleContext()
          Return the LocaleContext associated with the current thread, if any.
static void resetLocaleContext()
          Reset the LocaleContext for the current thread.
static void setLocale(java.util.Locale locale)
          Associate the given Locale with the current thread.
static void setLocale(java.util.Locale locale, boolean inheritable)
          Associate the given Locale with the current thread.
static void setLocaleContext(LocaleContext localeContext)
          Associate the given LocaleContext with the current thread, not exposing it as inheritable for child threads.
static void setLocaleContext(LocaleContext localeContext, boolean inheritable)
          Associate the given LocaleContext with the current thread.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

localeContextHolder

private static final java.lang.ThreadLocal<LocaleContext> localeContextHolder

inheritableLocaleContextHolder

private static final java.lang.ThreadLocal<LocaleContext> inheritableLocaleContextHolder
Constructor Detail

LocaleContextHolder

public LocaleContextHolder()
Method Detail

resetLocaleContext

public static void resetLocaleContext()
Reset the LocaleContext for the current thread.


setLocaleContext

public static void setLocaleContext(LocaleContext localeContext)
Associate the given LocaleContext with the current thread, not exposing it as inheritable for child threads.

Parameters:
localeContext - the current LocaleContext

setLocaleContext

public static void setLocaleContext(LocaleContext localeContext,
                                    boolean inheritable)
Associate the given LocaleContext with the current thread.

Parameters:
localeContext - the current LocaleContext, or null to reset the thread-bound context
inheritable - whether to expose the LocaleContext as inheritable for child threads (using an InheritableThreadLocal)

getLocaleContext

public static LocaleContext getLocaleContext()
Return the LocaleContext associated with the current thread, if any.

Returns:
the current LocaleContext, or null if none

setLocale

public static void setLocale(java.util.Locale locale)
Associate the given Locale with the current thread.

Will implicitly create a LocaleContext for the given Locale, not exposing it as inheritable for child threads.

Parameters:
locale - the current Locale, or null to reset the thread-bound context
See Also:
SimpleLocaleContext.SimpleLocaleContext(java.util.Locale)

setLocale

public static void setLocale(java.util.Locale locale,
                             boolean inheritable)
Associate the given Locale with the current thread.

Will implicitly create a LocaleContext for the given Locale.

Parameters:
locale - the current Locale, or null to reset the thread-bound context
inheritable - whether to expose the LocaleContext as inheritable for child threads (using an InheritableThreadLocal)
See Also:
SimpleLocaleContext.SimpleLocaleContext(java.util.Locale)

getLocale

public static java.util.Locale getLocale()
Return the Locale associated with the current thread, if any, or the system default Locale else.

Returns:
the current Locale, or the system default Locale if no specific Locale has been associated with the current thread
See Also:
LocaleContext.getLocale(), Locale.getDefault()