View Javadoc
1   package com.atlassian.refapp.decorator;
2   
3   import com.atlassian.templaterenderer.TemplateRenderer;
4   
5   import javax.servlet.Filter;
6   import javax.servlet.FilterChain;
7   import javax.servlet.FilterConfig;
8   import javax.servlet.ServletException;
9   import javax.servlet.ServletRequest;
10  import javax.servlet.ServletResponse;
11  import javax.servlet.http.HttpServletRequest;
12  import javax.servlet.http.HttpServletResponse;
13  import java.io.IOException;
14  import java.util.HashMap;
15  import java.util.Map;
16  
17  public class DecoratorServletFilter implements Filter {
18      private final TemplateRenderer templateRenderer;
19  
20      public DecoratorServletFilter(TemplateRenderer templateRenderer) {
21          this.templateRenderer = templateRenderer;
22      }
23  
24      public void init(FilterConfig filterConfig) throws ServletException {
25      }
26  
27      public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
28              throws IOException, ServletException {
29          if (!(servletRequest instanceof HttpServletRequest)) {
30              filterChain.doFilter(servletRequest, servletResponse);
31              return;
32          }
33          HttpServletRequest request = (HttpServletRequest) servletRequest;
34          HttpServletResponse response = (HttpServletResponse) servletResponse;
35          if (request.getServletPath().equals("/index.jsp") && !request.getRequestURI().contains("index.jsp")) {
36              // The container has sent us to the welcome page
37              render("/templates/index.vm", request, response);
38              return;
39          }
40          if (request.getServletPath().equals("/admin")) {
41              render("/templates/admin.vm", request, response);
42              return;
43          }
44          filterChain.doFilter(servletRequest, servletResponse);
45      }
46  
47      public void destroy() {
48      }
49  
50      private void render(String template, HttpServletRequest request, HttpServletResponse response) throws
51              IOException {
52          response.setContentType("text/html");
53          templateRenderer.render(template, getContext(request), response.getWriter());
54      }
55  
56      private Map<String, Object> getContext(HttpServletRequest request) {
57          Map<String, Object> context = new HashMap<String, Object>();
58          context.put("request", request);
59          return context;
60      }
61  }