KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > appfuse > webapp > filter > LocaleFilter


1 package org.appfuse.webapp.filter;
2
3 import org.appfuse.Constants;
4 import org.springframework.context.i18n.LocaleContextHolder;
5 import org.springframework.web.filter.OncePerRequestFilter;
6
7 import javax.servlet.FilterChain JavaDoc;
8 import javax.servlet.ServletException JavaDoc;
9 import javax.servlet.http.HttpServletRequest JavaDoc;
10 import javax.servlet.http.HttpServletResponse JavaDoc;
11 import javax.servlet.http.HttpSession JavaDoc;
12 import javax.servlet.jsp.jstl.core.Config;
13 import java.io.IOException JavaDoc;
14 import java.util.Locale JavaDoc;
15 import java.util.Map JavaDoc;
16
17 /**
18  * Filter to wrap request with a request including user preferred locale.
19  */

20 public class LocaleFilter extends OncePerRequestFilter {
21
22     public void doFilterInternal(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response,
23                                  FilterChain JavaDoc chain)
24             throws IOException JavaDoc, ServletException JavaDoc {
25
26         String JavaDoc locale = request.getParameter("locale");
27         Locale JavaDoc preferredLocale = null;
28
29         if (locale != null) {
30             preferredLocale = new Locale JavaDoc(locale);
31         }
32         
33         HttpSession JavaDoc session = request.getSession(false);
34
35         if (session != null) {
36             if (preferredLocale == null) {
37                 preferredLocale = (Locale JavaDoc) session.getAttribute(Constants.PREFERRED_LOCALE_KEY);
38             } else {
39                 session.setAttribute(Constants.PREFERRED_LOCALE_KEY, preferredLocale);
40                 Config.set(session, Config.FMT_LOCALE, preferredLocale);
41             }
42
43             if (preferredLocale != null && !(request instanceof LocaleRequestWrapper)) {
44                 request = new LocaleRequestWrapper(request, preferredLocale);
45                 LocaleContextHolder.setLocale(preferredLocale);
46             }
47         }
48
49         String JavaDoc theme = request.getParameter("theme");
50         if (theme != null && request.isUserInRole(Constants.ADMIN_ROLE)) {
51             Map JavaDoc config = (Map JavaDoc) getServletContext().getAttribute(Constants.CONFIG);
52             config.put(Constants.CSS_THEME, theme);
53         }
54
55         chain.doFilter(request, response);
56         
57         // Reset thread-bound LocaleContext.
58
LocaleContextHolder.setLocaleContext(null);
59     }
60 }
61
Popular Tags