You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/05/28 01:23:16 UTC

cvs commit: jakarta-tomcat-jasper/jasper34/generator/org/apache/jasper34/core Constants.java JspCompilationContext.java Options.java

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 apache@apache.org.
   *
   * 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 apache@apache.org.
   *
   * 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 apache@apache.org.
   *
   * 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();
  }