// $Id: DatasourceContextHandlerInterceptor.java 5473 2009-03-25 13:42:07Z a.kohlbecker $\r
/**\r
* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
* http://www.e-taxonomy.eu\r
-* \r
+*\r
* The contents of this file are subject to the Mozilla Public License Version 1.1\r
* See LICENSE.TXT at the top of this package for the full license terms.\r
*/\r
import javax.servlet.http.HttpServletRequest;\r
import javax.servlet.http.HttpServletResponse;\r
\r
-import org.apache.log4j.Logger;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;\r
\r
import eu.etaxonomy.cdm.remote.l10n.LocaleContext;\r
*/\r
public class LocaleContextHandlerInterceptor extends HandlerInterceptorAdapter {\r
\r
+ @Autowired\r
+ private final LocaleContext localeContext = null;\r
+\r
@SuppressWarnings("unchecked")\r
@Override\r
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {\r
- LocaleContext.setLocales(request.getLocales());\r
+ localeContext.setLocales(request.getLocales());\r
return true;\r
}\r
\r
import java.util.Locale;\r
import java.util.Vector;\r
\r
+import org.hibernate.HibernateException;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.stereotype.Component;\r
\r
\r
@Component\r
public class LocaleContext {\r
- \r
+\r
protected static ThreadLocal<Vector<Locale>> localesHolder = new ThreadLocal<Vector<Locale>>(){\r
\r
@Override\r
protected Vector<Locale> initialValue() {\r
return new Vector<Locale>();\r
}\r
- \r
+\r
};\r
- \r
- protected static Hashtable<String, List<Language>> languageMap = new Hashtable<String, List<Language>>(); \r
- \r
- private static ITermService termService;\r
- \r
+\r
+ protected static Hashtable<String, List<Language>> languageMap = new Hashtable<String, List<Language>>();\r
+\r
+ private ITermService termService;\r
+\r
@Autowired\r
public void setTermService(ITermService termService) {\r
this.termService = termService;\r
}\r
\r
- public static void setLocales(Enumeration<Locale> locales) {\r
+ public void setLocales(Enumeration<Locale> locales) {\r
Vector<Locale> l = new Vector<Locale>();\r
while(locales.hasMoreElements()){\r
l.add(locales.nextElement());\r
LocaleContext.localesHolder.set(l);\r
mapToLanguages(l);\r
}\r
- \r
+\r
public static Enumeration<Locale> getLocales(){\r
return localesHolder.get().elements();\r
}\r
- \r
+\r
/**\r
- * \r
+ *\r
* @return\r
*/\r
public static List<Language> getLanguages(){\r
return languageMap.get(localesKey);\r
}\r
\r
- private static void mapToLanguages(Vector<Locale> locales) {\r
- \r
+ private void mapToLanguages(Vector<Locale> locales) {\r
+\r
String localesKey = composeLocalesKey(locales.elements());\r
\r
- if(!languageMap.containsKey(localesKey)){\r
- List<Language> languages = termService.getLanguagesByLocale(locales.elements());\r
- languageMap.put(localesKey, languages);\r
- }\r
+ try {\r
+ if (!languageMap.containsKey(localesKey)) {\r
+ List<Language> languages = termService.getLanguagesByLocale(locales.elements());\r
+ languageMap.put(localesKey, languages);\r
+ }\r
+ } catch (HibernateException e) {\r
+\r
+ System.err.println("DEBUG: " + Thread.currentThread());\r
+ e.printStackTrace(System.err);\r
+ }\r
}\r
\r
private static String composeLocalesKey(Enumeration<Locale> locales) {\r