View Javadoc

1   /***
2    * 
3    */
4   package hu.elte.tribus.sf;
5   
6   import java.io.IOException;
7   
8   import javax.servlet.Filter;
9   import javax.servlet.FilterChain;
10  import javax.servlet.FilterConfig;
11  import javax.servlet.ServletException;
12  import javax.servlet.ServletRequest;
13  import javax.servlet.ServletResponse;
14  
15  import org.hibernate.Session;
16  
17  /***
18   * Yes, there are existing solutions for this pattern, but we are not running spring.
19   * 
20   * @author kocka
21   *
22   */
23  public class OpenSessionInViewFilter implements Filter {
24  
25  	/* (non-Javadoc)
26  	 * @see javax.servlet.Filter#destroy()
27  	 */
28  	public void destroy() {
29  		// TODO Auto-generated method stub
30  
31  	}
32  
33  	/* (non-Javadoc)
34  	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
35  	 */
36  	public void doFilter(ServletRequest request, ServletResponse response,
37  			FilterChain chain) throws IOException, ServletException {
38  		Session session = null;
39  		try{
40  			session = HibernateSessionFactory.getSession();
41  			chain.doFilter(request, response);
42  		} finally {
43  			if(session != null) {
44  				HibernateSessionFactory.closeSession();
45  			}
46  		}
47  	}
48  
49  	/* (non-Javadoc)
50  	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
51  	 */
52  	public void init(FilterConfig arg0) throws ServletException {
53  		//XXX: seeding should not be called from here, but it is ok for a prototype
54  		//XXX: what`s more it has lot of boilerplate code
55  		Session session = null;
56  		try{
57  			session = HibernateSessionFactory.getSession();
58  			new Seeder().seed();
59  			session.flush();
60  		} finally {
61  			if(session != null) {
62  				HibernateSessionFactory.closeSession();
63  			}
64  		}
65  	}
66  }