KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > jcr > filter > JcrFilter


1 package org.exoplatform.jcr.filter;
2
3 import java.io.IOException JavaDoc;
4
5 import javax.servlet.Filter JavaDoc;
6 import javax.servlet.FilterChain JavaDoc;
7 import javax.servlet.FilterConfig JavaDoc;
8 import javax.servlet.ServletException JavaDoc;
9 import javax.servlet.ServletRequest JavaDoc;
10 import javax.servlet.ServletResponse JavaDoc;
11 import javax.servlet.http.HttpServletRequest JavaDoc;
12 import javax.servlet.http.HttpSession JavaDoc;
13
14 import org.exoplatform.container.PortalContainer;
15 import org.exoplatform.container.RootContainer;
16 import org.exoplatform.container.SessionContainer;
17 import org.exoplatform.container.client.http.HttpClientInfo;
18 import org.exoplatform.services.database.HibernateServiceContainer;
19
20 public class JcrFilter implements Filter JavaDoc {
21
22   private String JavaDoc portalName_;
23   private HibernateServiceContainer hserviceContainer_;
24
25   public void init(FilterConfig JavaDoc filterConfig) {
26     portalName_ = filterConfig.getServletContext().getServletContextName();
27     PortalContainer pcontainer = RootContainer.getInstance()
28         .getPortalContainer(portalName_);
29     hserviceContainer_ = (HibernateServiceContainer) pcontainer
30         .getComponentInstanceOfType(HibernateServiceContainer.class);
31   }
32
33   public void doFilter(ServletRequest JavaDoc servletRequest,
34       ServletResponse JavaDoc servletResponse, FilterChain JavaDoc filterChain)
35       throws IOException JavaDoc, ServletException JavaDoc {
36     SessionContainer sessionContainer = null;
37     try {
38       String JavaDoc name = Thread.currentThread().getName();
39       PortalContainer pcontainer = RootContainer.getInstance()
40           .getPortalContainer(portalName_);
41       PortalContainer.setInstance(pcontainer);
42       
43       HttpServletRequest JavaDoc httpRequest = (HttpServletRequest JavaDoc) servletRequest ;
44       HttpSession JavaDoc session = httpRequest.getSession();
45       sessionContainer = (SessionContainer)pcontainer.getComponentInstance(
46          session.getId());
47       if(sessionContainer == null) {
48         sessionContainer = pcontainer.createSessionContainer(session.getId(), "default") ;
49         sessionContainer.getMonitor().setClientInfo(new HttpClientInfo(httpRequest)) ;
50       }
51       //attach to current thread
52
SessionContainer.setInstance(sessionContainer);
53       filterChain.doFilter(servletRequest, servletResponse);
54     } finally {
55       hserviceContainer_.closeAllSessions();
56       if(sessionContainer != null)sessionContainer.endActionLifcycle() ;
57       PortalContainer.setInstance(null) ;
58     }
59   }
60
61   public void destroy() {
62   }
63
64 }
65
Popular Tags