KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > info > magnolia > module > templating > renderers > ServletTemplateRenderer


1 /**
2  *
3  * Magnolia and its source-code is licensed under the LGPL.
4  * You may copy, adapt, and redistribute this file for commercial or non-commercial use.
5  * When copying, adapting, or redistributing this document in keeping with the guidelines above,
6  * you are required to provide proper attribution to obinary.
7  * If you reproduce or distribute the document without making any substantive modifications to its content,
8  * please use the following attribution line:
9  *
10  * Copyright 1993-2006 obinary Ltd. (http://www.obinary.com) All rights reserved.
11  *
12  */

13 package info.magnolia.module.templating.renderers;
14
15 import info.magnolia.cms.beans.config.Template;
16 import info.magnolia.cms.util.ClassUtil;
17
18 import java.io.IOException JavaDoc;
19
20 import javax.servlet.ServletException JavaDoc;
21 import javax.servlet.http.HttpServlet JavaDoc;
22 import javax.servlet.http.HttpServletRequest JavaDoc;
23 import javax.servlet.http.HttpServletResponse JavaDoc;
24
25 import org.apache.commons.lang.exception.NestableRuntimeException;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29
30 /**
31  * <p>
32  * Servlet template renderer, mapped to template type <code>servlet</code>. Servlet templates can have a
33  * <code>path</code> parameter like the jsp ones (request is forwarded to the specified path), or a
34  * <code>className</code> parameter.
35  * </p>
36  * <p>
37  * If <code>className</code> is set the servlet class will be instantiated and service() will be called (note the
38  * servlet will not properly be loaded by the container in this case, so don't rely on other methods except for
39  * doGet()/doPost() being called).
40  * </p>
41  * @author Fabrizio Giustina
42  * @version $Revision: 6341 $ ($Author: philipp $)
43  */

44 public class ServletTemplateRenderer extends JspTemplateRenderer {
45
46     /**
47      * Logger.
48      */

49     private static Logger log = LoggerFactory.getLogger(ServletTemplateRenderer.class);
50
51     /**
52      * @see JspTemplateRenderer#renderTemplate(Template, HttpServletRequest, HttpServletResponse)
53      */

54     public void renderTemplate(Template template, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
55         throws IOException JavaDoc, ServletException JavaDoc {
56
57         String JavaDoc className = template.getParameter("className");
58
59         if (className == null) {
60             // className not set, simply use path and forward this request
61
super.renderTemplate(template, request, response);
62             return;
63         }
64
65         // use className
66
HttpServlet JavaDoc servlet;
67         try {
68             servlet = (HttpServlet JavaDoc) ClassUtil.newInstance(className);
69         }
70         catch (Exception JavaDoc e) {
71             // simply retrow to the client for now...
72
throw new NestableRuntimeException(e);
73         }
74
75         servlet.service(request, response);
76
77     }
78
79 }
80
Popular Tags