001: ///////////////////////////////
002: // Makumba, Makumba tag library
003: // Copyright (C) 2000-2003 http://www.makumba.org
004: //
005: // This library is free software; you can redistribute it and/or
006: // modify it under the terms of the GNU Lesser General Public
007: // License as published by the Free Software Foundation; either
008: // version 2.1 of the License, or (at your option) any later version.
009: //
010: // This library is distributed in the hope that it will be useful,
011: // but WITHOUT ANY WARRANTY; without even the implied warranty of
012: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: // Lesser General Public License for more details.
014: //
015: // You should have received a copy of the GNU Lesser General Public
016: // License along with this library; if not, write to the Free Software
017: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
018: //
019: // -------------
020: // $Id: TomcatJsp.java 1482 2007-09-02 23:05:26Z rosso_nero $
021: // $Name$
022: /////////////////////////////////////
023:
024: package org.makumba.analyser.engine;
025:
026: import javax.servlet.ServletContext;
027: import javax.servlet.http.HttpServletRequest;
028:
029: //
030: // import javax.servlet.http.HttpServlet;
031: // import javax.servlet.http.HttpServletResponse;
032: // import javax.servlet.ServletConfig;
033: // import javax.servlet.ServletException;
034: // import java.io.IOException;
035:
036: /**
037: * This class is tomcat-specific because the available APIs do not expose this functionality. Given a servlet request,
038: * it allows to determine the URI of the currently executing JSP. This is needed for static page analysis. Adaptations
039: * will need to be made for other servlet containers. With simple modifications, the class can be made to act as a JSP
040: * servlet decorator.
041: *
042: * @author Cristian Bogdan
043: * @version $Id: TomcatJsp.java 1482 2007-09-02 23:05:26Z rosso_nero $
044: */
045: public class TomcatJsp /* extends HttpServlet */{
046:
047: /**
048: * Computes the URI to the current JSP
049: *
050: * @param request the Http request associated with the JSP
051: * @return A String containing the URI to the JSP
052: */
053: public static String getJspURI(HttpServletRequest request) {
054: String includeUri = (String) request
055: .getAttribute("javax.servlet.include.servlet_path");
056:
057: String jspUri;
058:
059: if (includeUri == null) {
060: jspUri = request.getServletPath();
061: } else {
062: jspUri = includeUri;
063: }
064: String jspFile = (String) request
065: .getAttribute("org.apache.catalina.jsp_file");
066: if (jspFile != null) {
067: jspUri = jspFile;
068: }
069: return jspUri;
070: }
071:
072: /**
073: * Computes the path to the directory in which the compiled JSP is
074: *
075: * @param context the ServletContext of the running tomcat
076: * @return A String containing the path to the directory where JSPs are being compiled
077: */
078: public static String getContextCompiledJSPDir(ServletContext context) {
079: return String.valueOf(context
080: .getAttribute("javax.servlet.context.tempdir"));
081: }
082:
083: public static String getJspCompilerPackage() {
084: return "org.apache.jasper";
085: }
086:
087: //
088: // when uncommenting the line below, add jasper-compiler.jar to the compilation classpath
089: //
090: // example configuration:
091: //
092: // <servlet> <servlet-name>jspMak</servlet-name>
093: // <servlet-class>org.makumba.view.jsptaglib.JspServlet</servlet-class>
094: // <init-param> <param-name>logVerbosityLevel</param-name> <param-value>WARNING</param-value> </init-param>
095: //
096: // <init-param> <param-name>jspCompilerPlugin</param-name>
097: // <param-value>org.apache.jasper.compiler.JikesJavaCompiler</param-value> </init-param>
098: //
099: // <load-on-startup>3</load-on-startup> </servlet>
100: //
101: //
102: //
103: // <!-- The mapping for the JSP servlet --> <servlet-mapping> <servlet-name>jspMak</servlet-name>
104: // <url-pattern>*.jsp</url-pattern> </servlet-mapping>
105: //
106: //
107: // HttpServlet decorated = new org.apache.jasper.servlet.JspServlet();
108: //
109: // public void init(ServletConfig config) throws ServletException { decorated.init(config); }
110: //
111: // public void service (HttpServletRequest request, HttpServletResponse response) throws ServletException,
112: // IOException { System.out.println("jsp hook: "+getJspPath(request)); decorated.service(request, response); }
113: // public void destroy() { decorated.destroy(); }
114: //
115: }
|