1   package com.atlassian.plugins.rest.module.servlet;
2   
3   import javax.servlet.Filter;
4   import javax.servlet.FilterChain;
5   import javax.servlet.FilterConfig;
6   import javax.servlet.ServletException;
7   import javax.servlet.ServletRequest;
8   import javax.servlet.ServletResponse;
9   import javax.servlet.http.HttpServletRequest;
10  import javax.servlet.http.HttpServletResponse;
11  import java.io.IOException;
12  
13  public class RestServletUtilsUpdaterFilter implements Filter
14  {
15  
16      public void init(FilterConfig filterConfig) throws ServletException
17      {
18      }
19  
20      protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException
21      {
22          // This sucks, I hate relying on ThreadLocals but we have to do that in order to use the SAL UserManager API. 
23          ServletUtils.setHttpServletRequest(request);
24          try
25          {
26              filterChain.doFilter(request, response);
27          }
28          finally
29          {
30              ServletUtils.setHttpServletRequest(null);
31          }
32      }
33  
34      /**
35       * Simply calls {@link #doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)}
36       * @see #doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain)
37       */
38      public final void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
39      {
40          doFilterInternal((HttpServletRequest) request, (HttpServletResponse) response, chain);
41      }
42  
43      public void destroy()
44      {
45      }
46  }