KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.icesoft.faces.webapp.http.servlet;
2
3 import com.icesoft.faces.webapp.http.common.Configuration;
4 import com.icesoft.faces.webapp.http.core.ResourceServer;
5 import com.icesoft.faces.webapp.xmlhttp.PersistentFacesCommonlet;
6 import com.icesoft.util.IdGenerator;
7 import com.icesoft.jasper.Constants;
8
9 import javax.servlet.ServletConfig JavaDoc;
10 import javax.servlet.ServletContext JavaDoc;
11 import javax.servlet.ServletException JavaDoc;
12 import javax.servlet.http.HttpServlet JavaDoc;
13 import javax.servlet.http.HttpServletRequest JavaDoc;
14 import javax.servlet.http.HttpServletResponse JavaDoc;
15 import javax.servlet.http.HttpSession JavaDoc;
16 import java.io.IOException JavaDoc;
17 import java.util.Enumeration JavaDoc;
18 import java.net.URL JavaDoc;
19 import java.net.MalformedURLException JavaDoc;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23
24 public class MainServlet extends HttpServlet JavaDoc {
25     
26     private static Log log = LogFactory.getLog(MainServlet.class);
27
28     private PathDispatcher dispatcher = new PathDispatcher();
29     private static final String JavaDoc AWT_HEADLESS = "java.awt.headless";
30
31     public void init(ServletConfig JavaDoc servletConfig) throws ServletException JavaDoc {
32         super.init(servletConfig);
33         try {
34             ServletContext JavaDoc servletContext = servletConfig.getServletContext();
35             String JavaDoc awtHeadless = System.getProperty(AWT_HEADLESS);
36             if (null == awtHeadless) {
37                 System.setProperty(AWT_HEADLESS, "true");
38             }
39             final Configuration configuration = new ServletContextConfiguration("com.icesoft.faces", servletContext);
40             final IdGenerator idGenerator = getIdGenerator(servletContext);
41
42             PseudoServlet sessionServer = new SessionDispatcher() {
43                 protected PseudoServlet newServlet(HttpSession JavaDoc session, Listener.Monitor sessionMonitor) {
44                     return new MainSessionBoundServlet(session, sessionMonitor, idGenerator, configuration);
45                 }
46             };
47             PseudoServlet resourceServer = new BasicAdaptingServlet(new ResourceServer(configuration));
48
49             dispatcher.dispatchOn(".*xmlhttp\\/.*", resourceServer);
50             dispatcher.dispatchOn(".*", sessionServer);
51         } catch (Exception JavaDoc e) {
52             throw new ServletException JavaDoc(e);
53         }
54     }
55
56     private IdGenerator getIdGenerator(ServletContext JavaDoc servletContext)
57             throws MalformedURLException JavaDoc {
58         URL JavaDoc res = servletContext.getResource("/");
59         //ICE-985: Some app servers will return null when you ask for a
60
//directory as a resource. Those special circumstances where
61
//it doesn't work, we'll try to locate a known resource.
62
if( res == null ){
63             res = servletContext.getResource("/WEB-INF/web.xml");
64             if( res == null ){
65                 if( log.isErrorEnabled() ){
66                     log.error( "invalid resource path" );
67                 }
68                 throw new NullPointerException JavaDoc("invalid resource path");
69             }
70         }
71         return new IdGenerator(res.getPath());
72     }
73
74     public void service(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
75         if( log.isTraceEnabled() ){
76             log.trace(getIncludeInfo(request,"entering main servlet"));
77         }
78
79         //set flag to indicate an ICEfaces request so that delegateNonIface
80
//will detect this and execute D2DViewHandler for it
81
request.setAttribute(PersistentFacesCommonlet.SERVLET_KEY,
82                              PersistentFacesCommonlet.PERSISTENT);
83
84         try {
85             dispatcher.service(request, response);
86         } catch (RuntimeException JavaDoc e) {
87             throw e;
88         } catch (Exception JavaDoc e) {
89             throw new ServletException JavaDoc(e);
90         }
91     }
92
93     private String JavaDoc getIncludeInfo(HttpServletRequest JavaDoc req, String JavaDoc header) {
94         StringBuffer JavaDoc buff = new StringBuffer JavaDoc(header);
95         buff.append("\nvia Attributes - via Methods");
96
97         buff.append("\n");
98         buff.append(Constants.INC_CONTEXT_PATH);
99         buff.append(": ");
100         buff.append(req.getAttribute(Constants.INC_CONTEXT_PATH));
101         buff.append(" - ");
102         buff.append(req.getContextPath());
103
104         buff.append("\n");
105         buff.append(Constants.INC_PATH_INFO);
106         buff.append(": ");
107         buff.append(req.getAttribute(Constants.INC_PATH_INFO));
108         buff.append(" - ");
109         buff.append(req.getPathInfo());
110
111         buff.append("\n");
112         buff.append(Constants.INC_QUERY_STRING);
113         buff.append(": ");
114         buff.append(req.getAttribute(Constants.INC_QUERY_STRING));
115         buff.append(" - ");
116         buff.append(req.getQueryString());
117
118         buff.append("\n");
119         buff.append(Constants.INC_REQUEST_URI);
120         buff.append(": ");
121         buff.append(req.getAttribute(Constants.INC_REQUEST_URI));
122         buff.append(" - ");
123         buff.append(req.getRequestURI());
124
125         buff.append("\n");
126         buff.append(Constants.INC_SERVLET_PATH);
127         buff.append(": ");
128         buff.append(req.getAttribute(Constants.INC_SERVLET_PATH));
129         buff.append(" - ");
130         buff.append(req.getServletPath());
131         
132         buff.append("\n\n");
133         buff.append("via getAttributeNames():\n");
134         Enumeration JavaDoc attrNames = req.getAttributeNames();
135         while (attrNames.hasMoreElements()) {
136             String JavaDoc key = (String JavaDoc)attrNames.nextElement();
137             Object JavaDoc val = req.getAttribute(key);
138             buff.append("\t");
139             buff.append(key);
140             buff.append(": ");
141             buff.append(val.toString());
142             buff.append("\n");
143         }
144
145         return buff.toString();
146     }
147
148     public void destroy() {
149         dispatcher.shutdown();
150     }
151 }
152
Popular Tags