package de.unioninvestment.eai.portal.support.vaadin.context;
import java.util.Locale;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
/**
* Threadlocal Kontext für den Zugriff auf verschiedene Zentrale Funktionen der
* UI.
*
* @author carsten.mjartan
*/
public class Context {
private static ContextProvider uiDelegateContextProvider = new UIContextProvider();
private static ThreadLocal<ContextProvider> delegate = new ThreadLocal<ContextProvider>();
private Context() {
// utility class => hidden constructor
}
/**
* Diese Methode sollte nur durch {@link ContextUtil} oder
* {@link StagingUI} aufgerufen werden.
*
* @param application
* die im aktuellen Thread relevante {@link StagingUI}
*/
public static void setProvider(ContextProvider application) {
delegate.set(application);
}
/**
* @return den Provider für Tests und andere Methoden
*/
static ContextProvider getProvider() {
ContextProvider contextProvider = delegate.get();
if (contextProvider == null) {
return uiDelegateContextProvider;
} else {
return contextProvider;
}
}
/**
* @return die aktuelle User-Locale
*/
public static Locale getLocale() {
return getProvider().getLocale();
}
/**
* Übersetzung von UI-Texten.
*
* @param key
* der Übersetzungsschlüssel
* @param args
* Parameter
* @return die Übersetzung gemäß der aktuellen Locale-Konfiguration
*/
public static String getMessage(String key, Object... args) {
return getProvider().getMessage(key, args);
}
/**
* @param requiredType
* der benötigte Typ eines Beans
* @return eine Instanz des Typs aus dem Spring ApplicationContext
* @throws NoSuchBeanDefinitionException
* falls die Bean im Spring-Kontext nicht gefunden werden kann
* @throws BeansException
* falls keine eindeutige Zuordnung getroffen werden kann
*/
public static <T> T getBean(Class<T> requiredType) {
return getProvider().getBean(requiredType);
}
/**
* @return die aktuelle Liferay-CommunityId
*/
public static long getLiferayCommunityId() {
return getProvider().getLiferayCommunityId();
}
}