Source code: JSPservletPkg/ServletStat.java
1 package JSPservletPkg;
2
3 import javax.servlet.*;
4 import javax.servlet.http.*;
5 import java.io.*;
6 import java.util.*;
7 import org.osgi.service.http.*;
8 import com.sun.jes.service.http.auth.basic.*;
9 /**
10 * Statistics display servlet.
11 * <p>Copyright (c) 2000-2001
12 * <pre>
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; version 2
16 * of the License.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 * </pre>
22 * @author Alexis Grandemange
23 * @version 1, 0
24 */
25 public class ServletStat extends HttpServlet implements HttpContext {
26 /** Invoked by Servlet container. */
27 public void init(ServletConfig config) throws ServletException {
28 super.init(config);
29 }
30 /**
31 * GET request handling.
32 * @param request HttpServletRequest.
33 * @param response HttpServletResponse.
34 */
35 public void doGet(HttpServletRequest request, HttpServletResponse response)
36 throws ServletException, IOException {
37 PrintWriter out = new PrintWriter (response.getOutputStream());
38 out.println(
39 "<html><head><title>Statistics</title></head><body><h2>Statistics</h2>");
40 Collection classEntries = handler.classEntries.values();
41 Properties prop = null;
42 String jarName = null;
43 if (request.getParameter("statOFF") != null) {
44 handler.toStat = false;
45 Iterator i = classEntries.iterator();
46 while(i.hasNext()) {
47 JSPhandler.ClassEntry ce = (JSPhandler.ClassEntry)i.next();
48 ce.stat.close();
49 }
50 } else
51 if (request.getParameter("statON") != null) {
52 handler.toStat = true;
53 Iterator i = classEntries.iterator();
54 while(i.hasNext()) {
55 JSPhandler.ClassEntry ce = (JSPhandler.ClassEntry)i.next();
56 ce.stat.init();
57 }
58 } else {
59 jarName = request.getParameter("jarName");
60 if (jarName != null) {
61 JSPhandler.ClassEntry ce = (JSPhandler.ClassEntry)
62 handler.classEntries.get(jarName);
63 prop = ce.stat.prop;
64 if (prop != null) {
65 String szToClear = (String)request.getParameter("Clear");
66 if (szToClear != null)
67 prop.clear();
68 else {
69 Enumeration e = prop.keys();
70 out.println("<table border=0 cellspacing=2 cellpadding=2 width=60%>");
71 out.println("<tr><td width=20%><font face=\"Helvetica\" size=2>" +
72 "<b>Servlet</b></font></td><td width=20%> </td><td width=20%>"
73 + "<font face=\"Helvetica\" size=2><b>Invocation number</b></td>" +
74 "</font></tr>");
75 while(e.hasMoreElements()) {
76 String classpath = (String)e.nextElement();
77 out.println("<tr><td width=20%><font face=\"Helvetica\" size=2>" +
78 classpath + "</font></td><td width=20%> </td><td width=20%>"
79 + "<font face=\"Helvetica\" size=2><b>" + prop.get(classpath) +
80 "</b></td></font></tr>");
81 }
82 out.println("</table>");
83 }
84 }
85 }
86 }
87 out.println("<form action=ServletStat method=\"GET\">");
88 out.println("<table border=0 cellspacing=2 cellpadding=2 width=60%><tr>");
89 out.println("<td width=20%><font face=\"Helvetica\"><b>JAR Name :</b>");
90 out.println("</td><td width=20%> </td><td width=20%>");
91 out.println("<font face=\"Helvetica\"><select name=\"jarName\">");
92 Set archs = handler.classEntries.keySet();
93 Iterator i = archs.iterator();
94 while(i.hasNext()) {
95 String option = (String)i.next();
96 if ((jarName != null) && option.equals(jarName))
97 out.println("<option selected value=\"" + option + "\">" + option);
98 else
99 out.println("<option value=\"" + option + "\">" + option);
100 }
101 out.println("</select></font></td></tr><tr>");
102 String statsToggle = handler.toStat ? "statOFF" : "statON";
103 out.println(
104 "<td width=20%><font face=\"Helvetica\"><input type=\"Submit\" value=\"" +
105 statsToggle + "\" name=\"" + statsToggle + "\"></td>");
106 out.println(
107 "<td width=20%><font face=\"Helvetica\"><input type=\"Submit\" value=\"" +
108 "Clear\" name=\"Clear\"></td>");
109 out.println(
110 "<td width=20%><font face=\"Helvetica\"><input type=\"Submit\" value=\"" +
111 "List\" name=\"List\"></td></tr><table></form>");
112 if (request.getParameter("statOFF") != null)
113 out.println("<p><font color=#DB1260 size=4><i>Stats turned OFF</i></font>");
114 else
115 if (request.getParameter("statON") != null)
116 out.println("<p><font color=#DB1260 size=4><i>Stats turned ON</i></font>");
117 else
118 if (jarName == null)
119 out.println(
120 "<p><font color=#DB1260 size=4><i>Select the archive name</i></font>");
121 else
122 if (prop == null)
123 out.println(
124 "<p><font color=#DB1260 size=4><i>No stats available (" +
125 (handler.toStat ? "set" : "not set") + ")</i></font>");
126 out.println("</body></html>");
127 out.flush();
128 }
129 public String getServletInfo() {
130 return "JSPservletPkg.ServletStat Information";
131 }
132 /**
133 * JSPhandler that created ServletStat.
134 * It implements also BundleActivator, ServiceListener.
135 */
136 JSPhandler handler;
137 /** Page access security. */
138 BasicSchemeHandler basic;
139 /**
140 * Constructor.
141 * @param jh JSPhandler that created it.
142 */
143 public ServletStat(JSPhandler jh) {
144 handler = jh;
145 }
146 /**
147 * HttpContext interface getResource.
148 * @param str requested resource.
149 */
150 public java.net.URL getResource(String str) {
151 return null;
152 }
153 /**
154 * HttpContext interface's getMimeType.
155 * @param str requested resource.
156 */
157 public String getMimeType(String str) {
158 return null;
159 }
160 /**
161 * HttpContext interface's handleSecurity.
162 * @param request HttpServletRequest.
163 * @param response HttpServletResponse.
164 */
165 public boolean handleSecurity(HttpServletRequest req,
166 HttpServletResponse res) {
167 if (handler.adminUser == null)
168 return true;
169 basic = handler.basic;
170 if (basic == null)
171 return false;
172 BasicSchemeHandler.Response response = basic.getResponse(req);
173 if (response == null) {
174 challenge(req, res);
175 return false;
176 }
177 String user = response.getName();
178 String password = response.getPassword();
179 if ((handler.adminPasswd == null) && handler.adminUser.equals(user))
180 return true;
181 if (handler.adminUser.equals(user) && handler.adminPasswd.equals(password))
182 return true;
183 challenge(req, res);
184 return false;
185 }
186 /**
187 * Invokes BasicSchemeHandler sendChallenge.
188 * @param request HttpServletRequest.
189 * @param response HttpServletResponse.
190 */
191 void challenge(HttpServletRequest req, HttpServletResponse res) {
192 try {
193 basic.sendChallenge(res, "dummy");
194 }
195 catch( IOException ioe ) {
196 ioe.printStackTrace();
197 }
198 }
199 }