costin 01/05/27 16:23:16 Added: jasper34/generator/org/apache/jasper34/core Constants.java JspCompilationContext.java Options.java Log: Added the common interfaces. This package will be the entry point to jasper generator ( the current one and any future design ) Revision Changes Path 1.1 jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/core/Constants.java Index: Constants.java =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * */ package org.apache.jasper34.core; import java.util.ResourceBundle; import java.util.MissingResourceException; import java.text.MessageFormat; import org.apache.tomcat.util.log.Log; import org.apache.tomcat.util.res.StringManager; /** * Some constants and other global data that are used by the compiler * and the runtime. * * @author Anil K. Vijendran * @author Harish Prabandham */ public class Constants { public static String JSP_RUNTIME_PACKAGE = "org.apache.jasper.runtime"; /** * The base class of the generated servlets. */ public static String JSP_SERVLET_BASE = JSP_RUNTIME_PACKAGE + ".HttpJspBase"; /** * _jspService is the name of the method that is called by * HttpJspBase.service(). This is where most of the code generated * from JSPs go. */ public static final String SERVICE_METHOD_NAME = "_jspService"; /** * Default servlet content type. */ public static final String SERVLET_CONTENT_TYPE = "text/html"; /** * These classes/packages are automatically imported by the * generated code. * * FIXME: Need to trim this to what is there in PR2 and verify * with all our generators -akv. */ public static final String[] STANDARD_IMPORTS = { "javax.servlet.*", "javax.servlet.http.*", "javax.servlet.jsp.*", // This one is not in spec, but a lot of tests depend on it. // The code is fixed to use explicit deps, when we test // the watchdog tests we can remove this "javax.servlet.jsp.tagext.*" }; // "javax.servlet.jsp.tagext.*", // "java.io.PrintWriter", "java.io.IOException", "java.io.FileInputStream", // "java.io.ObjectInputStream", "java.util.Vector", // "org.apache.jasper.runtime.*", "java.beans.*", // "org.apache.jasper.JasperException" // }; /** * ServletContext attribute for classpath. This is tomcat specific. * Other servlet engines can choose to have this attribute if they * want to have this JSP engine running on them. */ public static final String SERVLET_CLASSPATH = "org.apache.tomcat.jsp_classpath"; /** * ServletContext attribute for classpath. This is tomcat specific. * Other servlet engines can choose to have this attribute if they * want to have this JSP engine running on them. */ public static final String SERVLET_CLASS_LOADER = "org.apache.tomcat.classloader"; /** * Default size of the JSP buffer. */ public static final int K = 1024; public static final int DEFAULT_BUFFER_SIZE = 8*K; /** * The query parameter that causes the JSP engine to just * pregenerated the servlet but not invoke it. */ public static final String PRECOMPILE = "jsp_precompile"; /** * Servlet context and request attributes that the JSP engine * uses. */ public static final String INC_REQUEST_URI = "javax.servlet.include.request_uri"; public static final String INC_SERVLET_PATH = "javax.servlet.include.servlet_path"; public static final String TMP_DIR = "javax.servlet.context.tempdir"; /** * ProtectionDomain to use for JspLoader defineClass() for current * Context when using a SecurityManager. */ public static final String ATTRIB_JSP_ProtectionDomain = "tomcat.context.jsp.protection_domain"; /** * A token which is embedded in file names of the generated * servlet. */ public static final String JSP_TOKEN = "_jsp_"; /** * ID and location of the DTD for tag library descriptors. */ public static final String TAGLIB_DTD_PUBLIC_ID = "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"; public static final String TAGLIB_DTD_RESOURCE = "/org/apache/jasper/resources/web-jsptaglib_1_1.dtd"; /** * ID and location of the DTD for web-app deployment descriptors. */ public static final String WEBAPP_DTD_PUBLIC_ID = "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"; public static final String WEBAPP_DTD_RESOURCE = "/org/apache/jasper/resources/web.dtd"; /** * Default URLs to download the pluging for Netscape and IE. */ public static final String NS_PLUGIN_URL = "http://java.sun.com/products/plugin/"; public static final String IE_PLUGIN_URL = "http://java.sun.com/products/plugin/1.2.2/jinstall-1_2_2-win.cab#Version=1,2,2,0"; /** * This is where all our error messages and such are stored. */ private static StringManager resources; private static void initResources() { resources = StringManager.getManager( "org.apache.jasper.resources"); } /** * Get hold of a "message" or any string from our resources * database. */ public static final String getString(String key) { return getString(key, null); } /** * Format the string that is looked up using "key" using "args". */ public static final String getString(String key, Object[] args) { if(resources==null){ initResources(); } return resources.getString(key,args); } /** * Print a message into standard error with a certain verbosity * level. * * @param key is used to look up the text for the message (using * getString()). * @param verbosityLevel is used to determine if this output is * appropriate for the current verbosity * level. */ public static final void message(String key, int verbosityLevel) { message(key, null, verbosityLevel); } /** * Print a message into standard error with a certain verbosity * level after formatting it using "args". * * @param key is used to look up the message. * @param args is used to format the message. * @param verbosityLevel is used to determine if this output is * appropriate for the current verbosity * level. */ public static final void message(String key, Object[] args, int verbosityLevel) { if (jasperLog == null) jasperLog = Log.getLog("JASPER_LOG", null); if (jasperLog != null){ String msg = getString(key,args); msg=(msg==null)?key:msg; jasperLog.log(msg, verbosityLevel); } } public static Log jasperLog = null; } 1.1 jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/core/JspCompilationContext.java Index: JspCompilationContext.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/core/JspCompilationContext.java,v 1.1 2001/05/27 23:23:16 costin Exp $ * $Revision: 1.1 $ * $Date: 2001/05/27 23:23:16 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.jasper34.core; import org.apache.jasper34.generator.*; // import org.apache.jasper.compiler.ServletWriter; // //import org.apache.jasper.runtime.JspLoader; // import org.apache.jasper.compiler.TagLibraries; import java.io.IOException; import org.apache.jasper34.generator.Compiler; import org.apache.jasper34.runtime.JasperException; /** * A place holder for various things that are used through out the JSP * engine. This is a per-request/per-context data structure. Some of * the instance variables are set at different points. * * JspLoader creates this object and passes this off to the "compiler" * subsystem, which then initializes the rest of the variables. * * @author Anil K. Vijendran * @author Harish Prabandham */ public interface JspCompilationContext { /** * The classpath that is passed off to the Java compiler. */ public String getClassPath(); /** * Get the input reader for the JSP text. */ public JspReader getReader(); /** * Where is the servlet being generated? */ public ServletWriter getWriter(); /** * What class loader to use for loading classes while compiling * this JSP? I don't think this is used right now -- akv. */ public ClassLoader getClassLoader(); /** Add a jar to the classpath used by the loader */ public void addJar( String jar ) throws IOException ; /** * Are we processing something that has been declared as an * errorpage? */ public boolean isErrorPage(); /** * What is the scratch directory we are generating code into? * FIXME: In some places this is called scratchDir and in some * other places it is called outputDir. */ public String getOutputDir(); /** * Path of the JSP URI. Note that this is not a file name. This is * the context rooted URI of the JSP file. */ public String getJspFile(); /** * Just the class name (does not include package name) of the * generated class. */ public String getServletClassName(); /** * The package name into which the servlet class is generated. */ public String getServletPackageName(); /** * Utility method to get the full class name from the package and * class name. */ public String getFullClassName(); /** * Full path name of the Java file into which the servlet is being * generated. */ public String getServletJavaFileName(); /** * Are we keeping generated code around? */ public boolean keepGenerated(); /** * What's the content type of this JSP? Content type includes * content type and encoding. */ public String getContentType(); /** * Get hold of the Options object for this context. */ public Options getOptions(); public void setContentType(String contentType); public void setReader(JspReader reader); public void setWriter(ServletWriter writer); public void setServletClassName(String servletClassName); public void setServletPackageName(String servletPackageName); public void setServletJavaFileName(String servletJavaFileName); public void setErrorPage(boolean isErrPage); /** * Create a "Compiler" object based on some init param data. This * is not done yet. Right now we're just hardcoding the actual * compilers that are created. */ public Compiler createCompiler() throws JasperException; /** * Get the full value of a URI relative to this compilations context */ public String resolveRelativeUri(String uri); /** * Gets a resource as a stream, relative to the meanings of this * context's implementation. *@returns a null if the resource cannot be found or represented * as an InputStream. */ public java.io.InputStream getResourceAsStream(String res); /** * Gets the actual path of a URI relative to the context of * the compilation. */ public String getRealPath(String path); } 1.1 jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/core/Options.java Index: Options.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/core/Options.java,v 1.1 2001/05/27 23:23:16 costin Exp $ * $Revision: 1.1 $ * $Date: 2001/05/27 23:23:16 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.jasper34.core; import java.io.File; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; /** * A class to hold all init parameters specific to the JSP engine. * * @author Anil K. Vijendran * @author Hans Bergsten */ public interface Options { /** * Are we keeping generated code around? */ public boolean getKeepGenerated(); /** * Are we supporting large files? */ public boolean getLargeFile(); /** * Are we supporting HTML mapped servlets? */ public boolean getMappedFile(); /** * Should errors be sent to client or thrown into stderr? */ public boolean getSendErrorToClient(); /** * Should we include debug information in compiled class? */ public boolean getClassDebugInfo(); /** * Class ID for use in the plugin tag when the browser is IE. */ public String getIeClassId(); /** * What is my scratch dir? */ public File getScratchDir(); /** * What classpath should I use while compiling the servlets * generated from JSP files? */ public String getClassPath(); /** * What compiler plugin should I use to compile the servlets * generated from JSP files? */ public Class getJspCompilerPlugin(); /** * Path of the compiler to use for compiling JSP pages. */ public String getJspCompilerPath(); /** * ProtectionDomain for this JSP Context when using a SecurityManager */ public Object getProtectionDomain(); /** * Java platform encoding to generate the JSP * page servlet. */ public String getJavaEncoding(); }