--- /dev/null
+package com.pentila.entSavoie.cdt;
+
+import java.io.IOException;
+import java.util.Enumeration;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import com.liferay.portal.kernel.log.Log;
+import com.liferay.portal.kernel.log.LogFactoryUtil;
+import com.liferay.portal.kernel.util.AutoResetThreadLocal;
+
+/**
+ * Filter used to give access to the http servlet request through a ThreadLocal
+ * variable.
+ *
+ */
+public class RequestFilter implements Filter {
+
+ private static Log logger = LogFactoryUtil.getLog(RequestFilter.class);
+
+ private ServletContext context;
+
+ public static boolean isRequestSet(){
+ return getRequest()!=null;
+ }
+
+ /**
+ * Return current servlet request.
+ *
+ * @return current servlet request or <code>null</code> if no request is
+ * available
+ */
+ public static HttpServletRequest getRequest() {
+
+ HttpServletRequest request = _localRequest.get();
+
+ if (_log.isDebugEnabled()) {
+ _log.debug("getRequest " + request.toString());
+ }
+ return request;
+ }
+
+ /**
+ * Return current session.
+ *
+ * @return current session or <code>null</code> if no session is available
+ */
+ public static HttpSession getSession() {
+
+ HttpServletRequest request = _localRequest.get();
+
+ if (request != null) {
+ if (_log.isDebugEnabled()) {
+ _log.debug("getSession " + request.toString());
+ }
+ return request.getSession();
+ }
+ else {
+ return null;
+ }
+ }
+
+ /*
+ * Set the HttpServletRequest into a ThreadLocal variable before continuing
+ * to process other filters contained in the filter chain.
+ * @see
+ * com.liferay.portal.kernel.servlet.BaseFilter#processFilter(javax.servlet
+ * .http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
+ * javax.servlet.FilterChain)
+ */
+ //@Override
+ protected void processFilter(HttpServletRequest request,
+ HttpServletResponse response, FilterChain filterChain)
+ throws Exception {
+
+ if (_log.isDebugEnabled()) {
+ _log.debug("Process Filter [" + request +
+ "]");
+ }
+ // Set servlet request into a threadLocal variable
+ if (request instanceof HttpServletRequest) {
+ setRequest(request);
+ }
+ try {
+ filterChain.doFilter(request, response);
+ }
+ finally {
+ // To be thread safe the local thread are removed
+ _localRequest.remove();
+
+ }
+ }
+
+ /**
+ * Set the HttpServletRequest.
+ * @param request The request to set
+ */
+ public static void setRequest(HttpServletRequest request){
+ _localRequest.set((HttpServletRequest) request);
+ }
+
+ private static Log _log = LogFactoryUtil.getLog(RequestFilter.class);
+
+ // Used to share request value (instantiate a longLived thread)
+ private static ThreadLocal<HttpServletRequest> _localRequest =
+ new AutoResetThreadLocal<HttpServletRequest>(
+ RequestFilter.class + "._localRequest");
+
+ //@Override
+ public void destroy() {
+ // TODO Auto-generated method stub
+
+ }
+
+ //@Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ HttpServletRequest req = (HttpServletRequest) request;
+ setRequest(req);
+ Enumeration<String> params = req.getParameterNames();
+ while(params.hasMoreElements()){
+ String name = params.nextElement();
+ String value = request.getParameter(name);
+ logger.debug(req.getRemoteAddr() + "::Request Params::{"+name+"="+value+"}");
+ }
+
+ Cookie[] cookies = req.getCookies();
+ if(cookies != null){
+ for(Cookie cookie : cookies){
+ logger.debug(req.getRemoteAddr() + "::Cookie::{"+cookie.getName()+","+cookie.getValue()+"}");
+ }
+ }
+ // pass the request along the filter chain
+ chain.doFilter(request, response);
+
+ }
+
+ //@Override
+ public void init(FilterConfig fConfig) throws ServletException {
+ this.context = fConfig.getServletContext();
+ this.context.log("RequestLoggingFilter initialized");
+
+ }
+
+}
\ No newline at end of file