KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > webapp > http > servlet > MultiViewServlet


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 JavaDoc;
9 import javax.servlet.http.HttpServletResponse JavaDoc;
10 import javax.servlet.http.HttpSession JavaDoc;
11 import java.util.Map JavaDoc;
12
13 public class MultiViewServlet extends BasicAdaptingServlet {
14     private int viewCount = 0;
15     private HttpSession JavaDoc session;
16     private Map JavaDoc views;
17     private ViewQueue asynchronouslyUpdatedViews;
18     private String JavaDoc sessionID;
19     private Configuration configuration;
20     private SessionDispatcher.Listener.Monitor sessionMonitor;
21
22     public MultiViewServlet(HttpSession JavaDoc session, String JavaDoc sessionID, SessionDispatcher.Listener.Monitor sessionMonitor, Map JavaDoc views, ViewQueue asynchronouslyUpdatedViews, Configuration configuration) {
23         super(new PageServer());
24         this.sessionID = sessionID;
25         this.session = session;
26         this.sessionMonitor = sessionMonitor;
27         this.views = views;
28         this.asynchronouslyUpdatedViews = asynchronouslyUpdatedViews;
29         this.configuration = configuration;
30     }
31
32     public void service(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
33         //extract viewNumber if this request is from a redirect
34
ServletView view;
35         String JavaDoc redirectViewNumber = request.getParameter("rvn");
36         if (redirectViewNumber == null) {
37             String JavaDoc viewNumber = String.valueOf(++viewCount);
38             view = new ServletView(viewNumber, sessionID, request, response, asynchronouslyUpdatedViews, configuration);
39             views.put(viewNumber, view);
40             ContextEventRepeater.viewNumberRetrieved(session, sessionID, Integer.parseInt(viewNumber));
41         } else {
42             view = (ServletView) views.get(redirectViewNumber);
43             if (view == null) {
44                 view = new ServletView(redirectViewNumber, sessionID, request, response, asynchronouslyUpdatedViews, configuration);
45                 views.put(redirectViewNumber, view);
46                 ContextEventRepeater.viewNumberRetrieved(session, sessionID, Integer.parseInt(redirectViewNumber));
47             } else {
48                 view.updateOnRequest(request, response);
49                 view.switchToNormalMode();
50             }
51         }
52         sessionMonitor.touchSession();
53         super.service(request, response);
54         view.switchToPushMode();
55         view.release();
56     }
57 }
58
Popular Tags