KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jetspeed > services > webpage > WebPageConsoleServlet


1 /*
2  * Copyright 2000-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.apache.jetspeed.services.webpage;
18
19 // java.util
20
import java.util.Properties JavaDoc;
21 import java.util.Collection JavaDoc;
22
23 // java.io
24
import java.io.IOException JavaDoc;
25 import java.io.FileNotFoundException JavaDoc;
26 import java.io.FileInputStream JavaDoc;
27
28 // javax.servlet
29
import javax.servlet.http.*;
30 import javax.servlet.RequestDispatcher JavaDoc;
31 import javax.servlet.ServletContext JavaDoc;
32 import javax.servlet.ServletConfig JavaDoc;
33
34 // velocity
35
import org.apache.velocity.Template;
36 import org.apache.velocity.context.Context;
37 import org.apache.velocity.servlet.VelocityServlet;
38 import org.apache.velocity.app.Velocity;
39 import org.apache.velocity.exception.ResourceNotFoundException;
40 import org.apache.velocity.exception.ParseErrorException;
41
42
43 /**
44   *
45   * WebPageConsoleServlet is the main servlet entry point for the WebPage console.
46   *
47   */

48
49 public class WebPageConsoleServlet extends VelocityServlet
50 {
51
52     private String JavaDoc servletPath = null;
53     private String JavaDoc proxyRoot = null;
54     /*
55      * Request Handler for a Velocity servlet. Includes the context.
56      *
57      * @param request Servlet request.
58      * @param response Servlet response.
59      * @context the velocity request context.
60      * @exception IOException a servlet exception.
61      * @exception ServletException a servlet exception.
62      *
63      * @return The newly merged template.
64      */

65     public Template handleRequest( HttpServletRequest request,
66                                    HttpServletResponse response,
67                                    Context JavaDoc ctx )
68     {
69         if (servletPath == null)
70         {
71             servletPath = request.getServletPath();
72             proxyRoot = getProxyHost(request);
73         }
74         
75         boolean online = WebPageManager.isInit();
76         if (online == false)
77         {
78             bootStrapProxy(request, response); // forward
79
}
80
81         String JavaDoc action = request.getParameter("action");
82         String JavaDoc template;
83         
84         if (action == null)
85             template = sessions(ctx);
86         else if (action.equals("details"))
87             template = elementSessions(ctx, request);
88         else if (action.equals("test"))
89             template = test(ctx, request);
90         else if (action.equals("kill"))
91             template = kill(ctx, request);
92         else if (action.equals("killne"))
93             template = killne(ctx);
94         else if (action.equals("clear"))
95             template = clear(ctx);
96         else
97             template = sessions(ctx);
98                 
99         
100         Template outty = null;
101         
102         try
103         {
104             outty = getTemplate(template);
105         }
106         catch( ParseErrorException pee )
107         {
108             System.out.println("WebPageConsoleServlet : parse error for template " + pee);
109         }
110         catch( ResourceNotFoundException rnfe )
111         {
112             System.out.println("WebPageConsoleServlet : template not found " + rnfe);
113         }
114         catch( Exception JavaDoc e )
115         {
116             System.out.println("Error " + e);
117         }
118         return outty;
119
120     }
121
122     /**
123      * Set the log file to be off of the webapp root, and
124      * will do the same with the file loader paths
125      *
126      * @param config The Servlet configuration.
127      * @return The Properties collection of Velocity properties.
128      * @throws exceptions when failed to read the properties or log files
129      */

130     protected Properties JavaDoc loadConfiguration(ServletConfig JavaDoc config)
131     throws IOException JavaDoc, FileNotFoundException JavaDoc
132     {
133         /*
134          * get our properties file and load it
135          */

136
137         String JavaDoc propsFile = config.getInitParameter(INIT_PROPS_KEY);
138
139         Properties JavaDoc p = new Properties JavaDoc();
140
141         if ( propsFile != null )
142         {
143             String JavaDoc realPath = getServletContext().getRealPath(propsFile);
144
145             if ( realPath != null )
146             {
147                 propsFile = realPath;
148             }
149
150             p.load( new FileInputStream JavaDoc(propsFile) );
151         }
152
153         /*
154          * first, normalize our velocity log file to be in the
155          * webapp
156          */

157
158         String JavaDoc log = p.getProperty( Velocity.RUNTIME_LOG);
159
160         if (log != null )
161         {
162             log = getServletContext().getRealPath( log );
163
164             if (log != null)
165             {
166                 p.setProperty( Velocity.RUNTIME_LOG, log );
167             }
168         }
169
170
171         /*
172          * now, if there is a file loader resource path, treat it the
173          * same way.
174          */

175
176         String JavaDoc path = p.getProperty( Velocity.FILE_RESOURCE_LOADER_PATH );
177
178         if ( path != null)
179         {
180             path = getServletContext().getRealPath( path );
181
182             if ( path != null)
183             {
184                 p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH, path );
185             }
186         }
187
188         return p;
189     }
190
191     //////////////////////////////////////////////////////////////////////
192

193     private String JavaDoc sessions(Context JavaDoc ctx)
194     {
195         // default Sessions screen
196

197         Collection JavaDoc sessions = WebPageManager.getSessions();
198         Collection JavaDoc targets = WebPageManager.getSites();
199         boolean online = WebPageManager.isInit();
200
201         ctx.put("sessions", sessions);
202         ctx.put("targets", targets);
203         ctx.put("online", new Boolean JavaDoc(online));
204         ctx.put("proxyError", WebPageManager.getErrorString());
205         ctx.put("cmd", this);
206         return "proxyConsole.vm";
207     }
208
209     //////////////////////////////////////////////////////////////////////
210

211     private String JavaDoc elementSessions(Context JavaDoc ctx, HttpServletRequest request)
212     {
213         String JavaDoc sid = request.getParameter("id");
214
215         if (sid == null)
216         {
217             return sessions(ctx);
218         }
219         // long id = Long.valueOf(sid).longValue();
220
SessionMap map = WebPageManager.getSession(sid);
221         if (map == null)
222         {
223             return sessions(ctx);
224         }
225
226         // default Sessions screen
227
boolean online = WebPageManager.isInit();
228     
229         //Collection sessions = WebPageManager.getSessions();
230
//ctx.put("xxx_sessions", sessions );
231

232         ctx.put("online", new Boolean JavaDoc(online));
233         ctx.put("proxyError", WebPageManager.getErrorString());
234         ctx.put("cmd", this);
235         ctx.put("ne_sessions", map);
236
237         return "neConsole.vm";
238     }
239             
240     //////////////////////////////////////////////////////////////////////
241

242     private String JavaDoc kill(Context JavaDoc ctx, HttpServletRequest request)
243     {
244         // default Sessions screen
245
boolean online = WebPageManager.isInit();
246     
247         Collection JavaDoc sessions = WebPageManager.getSessions();
248         Collection JavaDoc elements = WebPageManager.getSites();
249     
250         ctx.put("xxx_sessions", sessions);
251         ctx.put("elements", elements);
252         ctx.put("online", new Boolean JavaDoc(online));
253         ctx.put("proxyError", WebPageManager.getErrorString());
254         ctx.put("cmd", this);
255         
256         return "proxyConsole.vm";
257     }
258
259     //////////////////////////////////////////////////////////////////////
260

261     private String JavaDoc killne(Context JavaDoc ctx)
262     {
263         return "proxyConsole.vm";
264     }
265
266     //////////////////////////////////////////////////////////////////////
267

268     private String JavaDoc clear(Context JavaDoc ctx)
269     {
270         return "proxyConsole.vm";
271     }
272
273     //////////////////////////////////////////////////////////////////////
274

275     private String JavaDoc test(Context JavaDoc ctx, HttpServletRequest request)
276     {
277         String JavaDoc id = request.getParameter("id");
278         if (id == null)
279         {
280             return sessions(ctx);
281         }
282         SessionMap map = WebPageManager.getSession(id);
283         if (map == null)
284         {
285             return sessions(ctx);
286         }
287         String JavaDoc ipa = request.getParameter("ipa");
288         if (ipa == null)
289         {
290             return sessions(ctx);
291         }
292         SiteSession session = (SiteSession)map.get(ipa);
293         if (session == null)
294         {
295             return sessions(ctx);
296         }
297
298         // default Sessions screen
299
boolean online = WebPageManager.isInit();
300     
301         //Collection sessions = WebPageManager.getSessions();
302
//ctx.put("xxx_sessions", sessions );
303

304         ctx.put("online", new Boolean JavaDoc(online));
305         ctx.put("proxyError", WebPageManager.getErrorString());
306         ctx.put("cmd", this);
307         ctx.put("ne_sessions", map);
308         //ctx.put("element", session.;
309
ctx.put("nes", session);
310
311         return "testConsole.vm";
312     }
313
314     //////////////////////////////////////////////////////////////////////
315

316     public String JavaDoc getRefresh()
317     {
318         return servletPath + "?action=refresh";
319     }
320
321     public String JavaDoc getClear()
322     {
323         return servletPath + "?action=clear";
324     }
325
326     public String JavaDoc getDetails()
327     {
328         return servletPath + "?action=details";
329     }
330
331     public String JavaDoc getTest()
332     {
333         return servletPath + "?action=test";
334     }
335
336     public String JavaDoc getKill()
337     {
338         return servletPath + "?action=kill";
339     }
340
341     public String JavaDoc getKillne()
342     {
343         return servletPath + "?action=killne";
344     }
345
346     public String JavaDoc getLogon()
347     {
348         String JavaDoc proxy = proxyRoot;
349         Configuration config = Configuration.getInstance();
350         proxy = proxy.concat("?logon-test=true&" + config.getSID() + "=");
351         return proxy;
352     }
353
354     public String JavaDoc getProxyRoot()
355     {
356         return proxyRoot;
357     }
358
359     public String JavaDoc getWebapp()
360     {
361         Configuration config = Configuration.getInstance();
362         return config.getWebapp();
363         //return ProxyUtil.concatURLs(proxyRoot, config.getWebapp());
364
}
365
366     ////////////////////////////////////////////////////////////////////
367

368     private String JavaDoc getProxyHost(HttpServletRequest request)
369     {
370         StringBuffer JavaDoc root = new StringBuffer JavaDoc();
371         String JavaDoc scheme = request.getScheme();
372         root.append(scheme);
373         root.append( "://");
374         int port = request.getServerPort();
375         root.append(request.getServerName());
376     
377         if ( (port > 0) &&
378              ((scheme.equals("http") && port != 80) ||
379               (scheme.equals("https") && port != 443)
380              )
381            )
382         {
383             root.append(":");
384             root.append(port);
385         }
386         root.append( Configuration.WPS_SERVLET );
387         return root.toString();
388     }
389
390     //////////////////////////////////////////////////////////////
391

392     void bootStrapProxy(HttpServletRequest request,
393                         HttpServletResponse response)
394     {
395
396         ServletContext JavaDoc ctx = getServletContext();
397
398         try
399         {
400             RequestDispatcher JavaDoc dispatcher
401                                 = ctx.getRequestDispatcher(Configuration.WPS_SERVLET);
402             
403             dispatcher.forward(request, response);
404         }
405         catch (Exception JavaDoc e)
406         {
407         }
408     }
409 }
410
411
412
Popular Tags