1 package org.exoplatform.jcr.filter; 2 3 import java.io.IOException ; 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.HttpSession ; 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 { 21 22 private String portalName_; 23 private HibernateServiceContainer hserviceContainer_; 24 25 public void init(FilterConfig 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 servletRequest, 34 ServletResponse servletResponse, FilterChain filterChain) 35 throws IOException , ServletException { 36 SessionContainer sessionContainer = null; 37 try { 38 String name = Thread.currentThread().getName(); 39 PortalContainer pcontainer = RootContainer.getInstance() 40 .getPortalContainer(portalName_); 41 PortalContainer.setInstance(pcontainer); 42 43 HttpServletRequest httpRequest = (HttpServletRequest ) servletRequest ; 44 HttpSession 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 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 |