1
2
3
4
5
6
7 package org.asyrinx.joey.hibernate.seasar.filter;
8
9 import java.io.IOException;
10
11 import javax.servlet.Filter;
12 import javax.servlet.FilterChain;
13 import javax.servlet.FilterConfig;
14 import javax.servlet.ServletContext;
15 import javax.servlet.ServletException;
16 import javax.servlet.ServletRequest;
17 import javax.servlet.ServletResponse;
18 import javax.servlet.http.HttpServletRequest;
19
20 import org.apache.commons.logging.Log;
21 import org.apache.commons.logging.LogFactory;
22 import org.asyrinx.brownie.seasar.servlet.S2ContainerLoader;
23 import org.seasar.framework.container.S2Container;
24
25 /***
26 * @author takeshi
27 */
28 public class OpenSessionInViewFilter implements Filter {
29
30 final Log log = LogFactory.getLog(this.getClass());
31
32 /***
33 *
34 */
35 public OpenSessionInViewFilter() {
36 super();
37 }
38
39 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
40 ServletException {
41
42 final ServletContext context;
43 if (request instanceof HttpServletRequest) {
44 context = ((HttpServletRequest) request).getSession().getServletContext();
45 } else {
46 throw new ServletException("Couldn't get S2Container because request isn't HttpSession but "
47 + request.getClass().getName());
48 }
49 final S2Container container = S2ContainerLoader.getContainer(context);
50 final RequestFilterChainTx chainProxy = (RequestFilterChainTx) container
51 .getComponent(RequestFilterChainTx.class);
52 chainProxy.doFilter(request, response, chain);
53 }
54
55 public void init(FilterConfig filterConfig) throws ServletException {
56
57 }
58
59 public void destroy() {
60
61 }
62
63 }