Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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%>&nbsp;</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%>&nbsp;</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%>&nbsp;</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 }