costin      2002/06/12 16:23:05

  Modified:    jasper2/src/share/org/apache/jasper/compiler Compiler.java
  Log:
  - create the Project object for ant compilation only if we actually need to compile
  the page.
  
  - support other compilers ( by using the old jspCompiler option ). It gets set to
  ant's build.compiler.
  
  - add an ant logger, so error messages from ant go in the same place with the
  jasper error messages ( whatever that is - it seems now is the Context.log )
  
  Revision  Changes    Path
  1.14      +40 -6     
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.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Compiler.java     7 Jun 2002 20:04:27 -0000       1.13
  +++ Compiler.java     12 Jun 2002 23:23:05 -0000      1.14
  @@ -70,6 +70,8 @@
   import org.apache.tools.ant.BuildEvent;
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.BuildListener;
  +import org.apache.tools.ant.BuildLogger;
  +import org.apache.tools.ant.DefaultLogger;
   import org.apache.tools.ant.Project;
   import org.apache.tools.ant.taskdefs.Javac;
   import org.apache.tools.ant.types.Path;
  @@ -115,7 +117,7 @@
       private PageInfo pageInfo;
       private JspServletWrapper jsw;
   
  -    protected Project project;
  +    protected Project project=null;
   
       protected Options options;
   
  @@ -133,11 +135,39 @@
           this.ctxt = ctxt;
        this.errDispatcher = new ErrorDispatcher();
           this.options = ctxt.getOptions();
  +    }
  +
  +    // Lazy eval - if we don't need to compile we probably don't need the project
  +    private Project getProject() {
  +        if( project!=null ) return project;
           // Initializing project
           project = new Project();
  +        // XXX We should use a specialized logger to redirect to jasperlog
  +        DefaultLogger bl=new JasperAntLogger();
  +        bl.setOutputPrintStream(System.out);
  +        bl.setErrorPrintStream(System.err);
  +
  +        if( Constants.jasperLog.getVerbosityLevel() >= Logger.DEBUG ) {
  +            bl.setMessageOutputLevel( Project.MSG_VERBOSE );
  +        }
  +        project.addBuildListener( bl );
  +        
  +        if( options.getCompiler() != null ) {
  +            Constants.jasperLog.log("Compiler " + options.getCompiler(), 
Logger.ERROR );
  +            project.setProperty("build.compiler", options.getCompiler() );
  +        }
           project.init();
  +        return project;
       }
   
  +    static class JasperAntLogger extends DefaultLogger {
  +        protected void printMessage(final String message,
  +                                    final PrintStream stream,
  +                                    final int priority) {
  +            Constants.jasperLog.log( message, Logger.INFORMATION );
  +        }
  +
  +    }
   
       // --------------------------------------------------------- Public Methods
   
  @@ -209,6 +239,7 @@
           boolean success = true;
   
           // Initializing javac task
  +        getProject();
           Javac javac = (Javac) project.createTask("javac");
   
           // Initializing classpath
  @@ -223,6 +254,7 @@
           // Configure the compiler object
           javac.setEncoding(javaEncoding);
           javac.setClasspath(path);
  +        //javac.setDestdir(new File(options.getScratchDir().getAbsolutePath()));
           javac.setDebug(ctxt.getOptions().getClassDebugInfo());
           javac.setSrcdir(srcPath);
           javac.setOptimize(true);
  @@ -241,21 +273,23 @@
           try {
               javac.execute();
           } catch (BuildException e) {
  +            e.printStackTrace();
               success = false;
           }
   
           // Stop capturing the System.err output for this thread
           errorReport = SystemLogHandler.unsetThread();
  -
  +        
           if (!ctxt.keepGenerated()) {
               File javaFile = new File(javaFileName);
               javaFile.delete();
           }
   
           if (!success) {
  +            Constants.jasperLog.log( "Error compiling file: " + javaFileName + " " 
+ errorReport,
  +                               Logger.ERROR);
               errDispatcher.javacError(errorReport, javaFileName, pageNodes);
           }
  -
       }
   
   
  
  
  

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

Reply via email to