1 package com.icesoft.faces.webapp.http.servlet; 2 3 import com.icesoft.faces.util.event.servlet.ContextEventRepeater; 4 import com.icesoft.faces.webapp.http.common.Configuration; 5 import com.icesoft.faces.webapp.http.core.PageServer; 6 import com.icesoft.faces.webapp.http.core.ViewQueue; 7 8 import javax.servlet.http.HttpServletRequest ; 9 import javax.servlet.http.HttpServletResponse ; 10 import javax.servlet.http.HttpSession ; 11 import java.util.Map ; 12 13 public class SingleViewServlet extends BasicAdaptingServlet { 14 private static final String viewNumber = "1"; 15 private HttpSession session; 16 private Map views; 17 private String sessionID; 18 private ViewQueue allUpdatedViews; 19 private Configuration configuration; 20 private SessionDispatcher.Listener.Monitor sessionMonitor; 21 22 public SingleViewServlet(HttpSession session, String sessionID, SessionDispatcher.Listener.Monitor sessionMonitor, Map views, ViewQueue allUpdatedViews, Configuration configuration) { 23 super(new PageServer()); 24 this.sessionID = sessionID; 25 this.session = session; 26 this.sessionMonitor = sessionMonitor; 27 this.views = views; 28 this.allUpdatedViews = allUpdatedViews; 29 this.configuration = configuration; 30 } 31 32 public void service(HttpServletRequest request, HttpServletResponse response) throws Exception { 33 ServletView view = (ServletView) views.get(viewNumber); 35 if (view == null) { 36 view = new ServletView(viewNumber, sessionID, request, response, allUpdatedViews, configuration); 37 views.put(viewNumber, view); 38 ContextEventRepeater.viewNumberRetrieved(session, sessionID, Integer.parseInt(viewNumber)); 39 } else { 40 view.updateOnRequest(request, response); 41 } 42 43 view.switchToNormalMode(); 44 sessionMonitor.touchSession(); 45 super.service(request, response); 46 view.switchToPushMode(); 47 view.release(); 48 } 49 50 public void shutdown() { 51 super.shutdown(); 52 } 53 } 54 | Popular Tags |