package fr.mch.mdo.restaurant.web.struts;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Locale;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
import fr.mch.mdo.logs.ILogger;
import fr.mch.mdo.restaurant.Constants;
import fr.mch.mdo.restaurant.ioc.spring.MdoBeanFactory;
/**
* @author Mathieu MA
*
* To change this generated comment edit the template variable
* "typecomment": Window>Preferences>Java>Templates. To enable and
* disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class MdoStrutsDispatcher extends StrutsPrepareAndExecuteFilter
{
private ILogger logger;
protected FilterConfig filterConfig;
private static String defaultEntryURI = null;
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
logger.debug("** START Request = " + System.currentTimeMillis() + "**");
// ConvertUtils.register(new DateLocaleConverter(Locale.getDefault(),
// "yyyyMMdd"), java.util.Date.class);
// This is required for UTF8 user setter parameters:
// Example:
// 1) User enters "tété" in HTML input type=text field named
// "bean.name".
// 2) Struts2 fills the name of bean with "t?t?" if we don't perform
// request.getParameter("foo");
request.setCharacterEncoding("UTF-8");
request.getParameter("foo");
// This is default value equals to the instruction <%@page
// contentType="text/html; charset=UTF-8"%>
// Could override in JSP page
response.setContentType("text/html; charset=UTF-8");
// if(((Log4JLogger)logger).isDebugEnabled())
{
logger.debug("List of Request Parameters: ");
for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) {
String s = e.nextElement();
String[] sArray = request.getParameterValues(s);
for (int i = 0; i < sArray.length; i++) {
logger.debug("**" + s + "[" + i + "]==" + sArray[i] + "**");
}
}
}
super.doFilter(request, response, chain);
logger.debug("** END Request = " + System.currentTimeMillis() + "**");
}
public void init(FilterConfig filterConfig) throws ServletException {
defaultEntryURI = filterConfig.getServletContext().getContextPath() + filterConfig.getServletContext().getInitParameter(Constants.DEFAULT_ENTRY_URI_KEY);
this.filterConfig = filterConfig;
this.logger = MdoBeanFactory.getInstance().getLogger(MdoStrutsDispatcher.class.getName());
super.init(filterConfig);
}
public static void initSession(HttpServletRequest request) {
HttpSession session = request.getSession();
session.removeAttribute(Constants.USER_SESSION_PREFIX_KEY);
initI18nSession(request.getSession(), request.getLocale());
}
public static void initI18nSession(HttpSession session, Locale locale) {
// Struts Configuration For I18n=WW_TRANS_I18N_LOCALE this is will be
// done in the class MdoProcessLanguageInterceptor extends
// I18nInterceptor
// session.setAttribute(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE,
// locale);
// JSTL Configuration For I18n
Config.set(session, Config.FMT_LOCALE, locale);
}
public static String getDefaultEnrtryURI() {
return defaultEntryURI;
}
}