glenn       2002/12/08 05:42:53

  Modified:    jasper2/src/share/org/apache/jasper
                        EmbededServletOptions.java
                        JspCompilationContext.java
               jasper2/src/share/org/apache/jasper/compiler Compiler.java
                        JspRuntimeContext.java
               jasper2/src/share/org/apache/jasper/servlet
                        JspServletWrapper.java
  Log:
  Port bug fixes and minor changes I made to Tomcat 4 to Tomcat 5 where appropriate.
  
  Revision  Changes    Path
  1.15      +8 -5      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/EmbededServletOptions.java
  
  Index: EmbededServletOptions.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/EmbededServletOptions.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- EmbededServletOptions.java        4 Dec 2002 00:48:42 -0000       1.14
  +++ EmbededServletOptions.java        8 Dec 2002 13:42:52 -0000       1.15
  @@ -184,7 +184,7 @@
        * Java platform encoding to generate the JSP
        * page servlet.
        */
  -    private String javaEncoding;
  +    private String javaEncoding = "UTF8";
   
       public String getProperty(String name ) {
           return settings.getProperty( name );
  @@ -476,7 +476,10 @@
                                     
           this.compiler = config.getInitParameter("compiler");
   
  -        this.javaEncoding = config.getInitParameter("javaEncoding");
  +        String javaEncoding = config.getInitParameter("javaEncoding");
  +        if (javaEncoding != null) {
  +            this.javaEncoding = javaEncoding;
  +        }
   
        // Setup the global Tag Libraries location cache for this
        // web-application.
  
  
  
  1.27      +3 -11     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java
  
  Index: JspCompilationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- JspCompilationContext.java        5 Dec 2002 02:27:35 -0000       1.26
  +++ JspCompilationContext.java        8 Dec 2002 13:42:52 -0000       1.27
  @@ -579,9 +579,6 @@
           throws JasperException, FileNotFoundException
       {
           try {
  -            if (servletClass == null && !options.getDevelopment()) {
  -                compile();
  -            }
               jspLoader = new JasperLoader
                   (outUrls,
                    getServletPackageName() + "." + getServletClassName(),
  @@ -597,14 +594,9 @@
                               getServletClassName();
               }
               servletClass = jspLoader.loadClass(name);
  -        } catch (FileNotFoundException ex) {
  -            jspCompiler.removeGeneratedFiles();
  -            throw ex;
           } catch (ClassNotFoundException cex) {
               throw new JasperException(
                   Constants.getString("jsp.error.unable.load"),cex);
  -        } catch (JasperException ex) {
  -            throw ex;
           } catch (Exception ex) {
               throw new JasperException
                   (Constants.getString("jsp.error.unable.compile"), ex);
  
  
  
  1.41      +36 -44    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- Compiler.java     5 Dec 2002 23:56:39 -0000       1.40
  +++ Compiler.java     8 Dec 2002 13:42:53 -0000       1.41
  @@ -120,6 +120,7 @@
       private ErrorDispatcher errDispatcher;
       private PageInfo pageInfo;
       private JspServletWrapper jsw;
  +    private JasperAntLogger logger;
       private TagFileProcessor tfp;
   
       protected Project project=null;
  @@ -148,20 +149,19 @@
           // Initializing project
           project = new Project();
           // XXX We should use a specialized logger to redirect to jasperlog
  -        //        DefaultLogger bl=new JasperAntLogger();
  -        DefaultLogger bl=new DefaultLogger();
  -        bl.setOutputPrintStream(System.err);
  -        bl.setErrorPrintStream(System.err);
  +        logger = new JasperAntLogger();
  +        logger.setOutputPrintStream(System.out);
  +        logger.setErrorPrintStream(System.err);
   
           if( Constants.jasperLog.getVerbosityLevel() >= Logger.DEBUG ) {
  -            bl.setMessageOutputLevel( Project.MSG_VERBOSE );
  +            logger.setMessageOutputLevel( Project.MSG_VERBOSE );
           } else {
  -            bl.setMessageOutputLevel( Project.MSG_INFO );
  +            logger.setMessageOutputLevel( Project.MSG_INFO );
           }
           if( log.isTraceEnabled() ) {
  -            bl.setMessageOutputLevel( Project.MSG_VERBOSE );
  +            logger.setMessageOutputLevel( Project.MSG_VERBOSE );
           }
  -        project.addBuildListener( bl );
  +        project.addBuildListener( logger);
           
           if( options.getCompiler() != null ) {
               if( log.isDebugEnabled() )
  @@ -169,22 +169,27 @@
               project.setProperty("build.compiler", options.getCompiler() );
           }
           project.init();
  -//         Vector v=project.getBuildListeners();
  -//         if( v.size() > 0 ) {
  -//             BuildListener bl=(BuildListener)v.elementAt(0);
  -//             System.out.println("XXX " + bl );
  -//             ((DefaultLogger)bl).setMessageOutputLevel(Project.MSG_VERBOSE);
  -//         }
           return project;
       }
   
  -    static class JasperAntLogger extends DefaultLogger {
  -        private static org.apache.commons.logging.Log log=
  -            org.apache.commons.logging.LogFactory.getLog( Compiler.class );
  +    class JasperAntLogger extends DefaultLogger {
  +
  +        private StringBuffer reportBuf = new StringBuffer();
  +
           protected void printMessage(final String message,
                                       final PrintStream stream,
                                       final int priority) {
  -            log.info( message );
  +        }
  +
  +        protected void log(String message) {
  +            reportBuf.append(message);
  +            reportBuf.append(System.getProperty("line.separator"));
  +        }
  +
  +        protected String getReport() {
  +            String report = reportBuf.toString();
  +            reportBuf.setLength(0);
  +            return report;
           }
       }
   
  @@ -225,31 +230,13 @@
           String javaFileName = ctxt.getServletJavaFileName();
   
           // Setup the ServletWriter
  -     // We try UTF8 by default. If it fails, we use the java encoding 
  -     // specified for JspServlet init parameter "javaEncoding".
  -
  -     String javaEncoding = "UTF8"; 
  +        String javaEncoding = ctxt.getOptions().getJavaEncoding();
        OutputStreamWriter osw = null; 
        try {
            osw = new OutputStreamWriter(new FileOutputStream(javaFileName),
                                         javaEncoding);
        } catch (UnsupportedEncodingException ex) {
  -         // Try to get the java encoding from the "javaEncoding"
  -         // init parameter for JspServlet.
  -         javaEncoding = ctxt.getOptions().getJavaEncoding();
  -         if (javaEncoding != null) {
  -             try {
  -                 osw = new OutputStreamWriter
  -                        (new FileOutputStream(javaFileName),javaEncoding);
  -             } catch (UnsupportedEncodingException ex2) {
  -                 // no luck :-(
  -                 errDispatcher.jspError("jsp.error.invalid.javaEncoding",
  -                                        "UTF8", javaEncoding);
  -             }
  -         } else {
  -             errDispatcher.jspError("jsp.error.needAlternateJavaEncoding",
  -                                    "UTF8");
  -         }
  +            errDispatcher.jspError("jsp.error.needAlternateJavaEncoding", 
javaEncoding);
        }
   
        ServletWriter writer = new ServletWriter(new PrintWriter(osw));
  @@ -322,13 +309,13 @@
           throws FileNotFoundException, JasperException, Exception {
   
           long t1=System.currentTimeMillis();
  -     String javaEncoding = "UTF8"; 
  +        String javaEncoding = ctxt.getOptions().getJavaEncoding();
           String javaFileName = ctxt.getServletJavaFileName();
           String classpath = ctxt.getClassPath(); 
   
           String sep = System.getProperty("path.separator");
   
  -        String errorReport = null;
  +        StringBuffer errorReport = new StringBuffer();
           boolean success = true;
   
           // Start capturing the System.err output for this thread
  @@ -381,9 +368,15 @@
               success = false;
           }
   
  +        errorReport.append(logger.getReport());
  +
           // Stop capturing the System.err output for this thread
  -        errorReport = SystemLogHandler.unsetThread();
  -        
  +        String errorCapture = SystemLogHandler.unsetThread();
  +        if (errorCapture != null) {
  +            errorReport.append(System.getProperty("line.separator"));
  +            errorReport.append(errorCapture);
  +        }
  +
           if (!ctxt.keepGenerated()) {
               File javaFile = new File(javaFileName);
               javaFile.delete();
  @@ -391,8 +384,7 @@
   
           if (!success) {
               log.error( "Error compiling file: " + javaFileName + " " + errorReport);
  -            if(errorReport!=null ) 
  -                errDispatcher.javacError(errorReport, javaFileName, pageNodes);
  +            errDispatcher.javacError(errorReport.toString(), javaFileName, 
pageNodes);
           }
   
           long t2=System.currentTimeMillis();
  
  
  
  1.8       +25 -18    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspRuntimeContext.java
  
  Index: JspRuntimeContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspRuntimeContext.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JspRuntimeContext.java    28 Nov 2002 04:18:08 -0000      1.7
  +++ JspRuntimeContext.java    8 Dec 2002 13:42:53 -0000       1.8
  @@ -96,10 +96,6 @@
    * is dependent upon.  If a dpendent file changes the JSP page
    * which included it is recompiled.
    *
  - * Saves information about JSP dependincies to the file
  - * <code>JSP_DEPENDENCY.ser</code> in the web application context
  - * work directory.
  - *
    * Only used if a web application context is a directory.
    *
    * @author Glenn L. Nielsen
  @@ -389,20 +385,30 @@
           if( policy != null ) {
               try {          
                   // Get the permissions for the web app context
  -                String contextDir = context.getRealPath("/");
  -                if( contextDir == null ) {
  -                    contextDir = options.getScratchDir().toString();
  +                String docBase = context.getRealPath("/");
  +                if( docBase == null ) {
  +                    docBase = options.getScratchDir().toString();
  +                }
  +                if (!docBase.endsWith(File.separator)){
  +                    docBase = docBase + File.separator;
                   }
  -                URL url = new URL("file:" + contextDir);
  +                File contextDir = new File(docBase);
  +                URL url = contextDir.getCanonicalFile().toURL();
                   codeSource = new CodeSource(url,null);
                   permissionCollection = policy.getPermissions(codeSource);
  -                // Create a file read permission for web app context directory
  -                if (contextDir.endsWith(File.separator)) {
  -                    contextDir = contextDir + "-";
  +
  +                docBase = docBase + "-";
  +                permissionCollection.add(new FilePermission(docBase,"read"));
  +
  +                // Create a file read permission for web app tempdir (work) 
directory
  +                String workDir = options.getScratchDir().toString();
  +                if (workDir.endsWith(File.separator)) {
  +                    workDir = workDir + "-";
                   } else {
  -                    contextDir = contextDir + File.separator + "-";
  +                    workDir = workDir + File.separator + "-";
                   }
  -                permissionCollection.add(new FilePermission(contextDir,"read"));
  +                permissionCollection.add(new FilePermission(workDir,"read"));
  +
                   // Allow the JSP to access org.apache.jasper.runtime.HttpJspBase
                   permissionCollection.add( new RuntimePermission(
                       "accessClassInPackage.org.apache.jasper.runtime") );
  @@ -435,7 +441,8 @@
                           permissionCollection.add(
                                   new FilePermission(jndiUrl,"read") );
                   }
  -            } catch(MalformedURLException mfe) {
  +            } catch(Exception e) {
  +                context.log("Security Init for context failed",e);
               }
           }
       }
  
  
  
  1.23      +7 -5      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java
  
  Index: JspServletWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- JspServletWrapper.java    5 Dec 2002 02:27:35 -0000       1.22
  +++ JspServletWrapper.java    8 Dec 2002 13:42:53 -0000       1.23
  @@ -115,6 +115,7 @@
       private long available = 0L;
       private ServletConfig config;
       private Options options;
  +    private boolean firstTime = true;
       private boolean isTagFile;
       private int tripCount;
   
  @@ -183,6 +184,7 @@
                       }
                       
                       theServlet.init(config);
  +                    firstTime = false;
                   }
               }    
           }
  @@ -202,7 +204,7 @@
               if (ctxt.isRemoved()) {
                   throw new FileNotFoundException(jspUri);
               }
  -            if (options.getDevelopment()) {
  +            if (options.getDevelopment() || firstTime ) {
                   synchronized (this) {
                       ctxt.compile();
                   }
  @@ -284,7 +286,7 @@
                        Constants.getString("jsp.error.unavailable"));
               }
   
  -            if (options.getDevelopment()) {
  +            if (options.getDevelopment()  || firstTime ) {
                   synchronized (this) {
                       ctxt.compile();
                   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to