private void generateJava() throws Exception {
        
        long t1, t2, t3, t4;
        t1 = t2 = t3 = t4 = 0;

        if (log.isLoggable(Level.FINE)) {
            t1 = System.currentTimeMillis();
        }

        // Setup page info area
        pageInfo = new PageInfo(new BeanRepository(ctxt.getClassLoader(),
                                                   errDispatcher),
                                ctxt.getJspFile());

        JspConfig jspConfig = options.getJspConfig();
        JspProperty jspProperty =
            jspConfig.findJspProperty(ctxt.getJspFile());

        /*
         * If the current uri is matched by a pattern specified in
         * a jsp-property-group in web.xml, initialize pageInfo with
         * those properties.
         */
        pageInfo.setELIgnored(JspUtil.booleanValue(
                                            jspProperty.isELIgnored()));
        pageInfo.setScriptingInvalid(JspUtil.booleanValue(
                                            jspProperty.isScriptingInvalid()));
        pageInfo.setTrimDirectiveWhitespaces(JspUtil.booleanValue(
                                            jspProperty.getTrimSpaces()));
        pageInfo.setDeferredSyntaxAllowedAsLiteral(JspUtil.booleanValue(
                                            jspProperty.getPoundAllowed()));
        pageInfo.setErrorOnUndeclaredNamespace(JspUtil.booleanValue(
            jspProperty.errorOnUndeclaredNamespace()));

        if (jspProperty.getIncludePrelude() != null) {
            pageInfo.setIncludePrelude(jspProperty.getIncludePrelude());
        }
        if (jspProperty.getIncludeCoda() != null) {
	    pageInfo.setIncludeCoda(jspProperty.getIncludeCoda());
        }
        if (options.isDefaultBufferNone() && pageInfo.getBufferValue() == null){
            // Set to unbuffered if not specified explicitly
            pageInfo.setBuffer(0);
        }

        String javaFileName = ctxt.getServletJavaFileName();
        ServletWriter writer = null;

        try {
            // Setup the ServletWriter
            Writer javaWriter = javaCompiler.getJavaWriter(
                                    javaFileName,
                                    ctxt.getOptions().getJavaEncoding());
            writer = new ServletWriter(new PrintWriter(javaWriter));
            ctxt.setWriter(writer);

            // Reset the temporary variable counter for the generator.
            JspUtil.resetTemporaryVariableName();

	    // Parse the file
	    ParserController parserCtl = new ParserController(ctxt, this);
	    pageNodes = parserCtl.parse(ctxt.getJspFile());

	    if (ctxt.isPrototypeMode()) {
                // generate prototype .java file for the tag file
                Generator.generate(writer, this, pageNodes);
                writer.close();
                writer = null;
                return;
            }

            // Validate and process attributes
            Validator.validate(this, pageNodes);

            if (log.isLoggable(Level.FINE)) {
                t2 = System.currentTimeMillis();
            }

            // Collect page info
            Collector.collect(this, pageNodes);

            // Compile (if necessary) and load the tag files referenced in
            // this compilation unit.
            tfp = new TagFileProcessor();
            tfp.loadTagFiles(this, pageNodes);

            if (log.isLoggable(Level.FINE)) {
                t3 = System.currentTimeMillis();
            }
        
            // Determine which custom tag needs to declare which scripting vars
            ScriptingVariabler.set(pageNodes, errDispatcher);

            // Optimizations by Tag Plugins
            TagPluginManager tagPluginManager = options.getTagPluginManager();
            tagPluginManager.apply(pageNodes, errDispatcher, pageInfo);

            // Optimization: concatenate contiguous template texts.
            TextOptimizer.concatenate(this, pageNodes);

            // Generate static function mapper codes.
            ELFunctionMapper.map(this, pageNodes);

            // generate servlet .java file
            Generator.generate(writer, this, pageNodes);
            writer.close();
            writer = null;

            // The writer is only used during the compile, dereference
            // it in the JspCompilationContext when done to allow it
            // to be GC'd and save memory.
            ctxt.setWriter(null);

            if (log.isLoggable(Level.FINE)) {
                t4 = System.currentTimeMillis();
                log.fine("Generated "+ javaFileName + " total="
                          + (t4-t1) + " generate=" + (t4-t3)
                          + " validate=" + (t2-t1));
            }

        } catch (Exception e) {
            if (writer != null) {
                try {
                    writer.close();
                    writer = null;
                } catch (Exception e1) {
                    // do nothing
                }
            }
            // Remove the generated .java file
            javaCompiler.doJavaFile(false);
            throw e;
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (Exception e2) {
                    // do nothing
                }
            }
        }
        
        // JSR45 Support
        if (! options.isSmapSuppressed()) {
            smapUtil.generateSmap(pageNodes);
        }

        // If any proto type .java and .class files was generated,
        // the prototype .java may have been replaced by the current
        // compilation (if the tag file is self referencing), but the
        // .class file need to be removed, to make sure that javac would
        // generate .class again from the new .java file just generated.
        tfp.removeProtoTypeFiles(ctxt.getClassFileName());
    }
private void generateJava() throws Exception {
        
        long t1, t2, t3, t4;
        t1 = t2 = t3 = t4 = 0;

        if (log.isLoggable(Level.FINE)) {
            t1 = System.currentTimeMillis();
        }

        
        pageInfo = new PageInfo(new BeanRepository(ctxt.getClassLoader(),
                                                   errDispatcher),
                                ctxt.getJspFile());

        JspConfig jspConfig = options.getJspConfig();
        JspProperty jspProperty =
            jspConfig.findJspProperty(ctxt.getJspFile());

        
        pageInfo.setELIgnored(JspUtil.booleanValue(
                                            jspProperty.isELIgnored()));
        pageInfo.setScriptingInvalid(JspUtil.booleanValue(
                                            jspProperty.isScriptingInvalid()));
        pageInfo.setTrimDirectiveWhitespaces(JspUtil.booleanValue(
                                            jspProperty.getTrimSpaces()));
        pageInfo.setDeferredSyntaxAllowedAsLiteral(JspUtil.booleanValue(
                                            jspProperty.getPoundAllowed()));
        pageInfo.setErrorOnUndeclaredNamespace(JspUtil.booleanValue(
            jspProperty.errorOnUndeclaredNamespace()));

        if (jspProperty.getIncludePrelude() != null) {
            pageInfo.setIncludePrelude(jspProperty.getIncludePrelude());
        }
        if (jspProperty.getIncludeCoda() != null) {
	    pageInfo.setIncludeCoda(jspProperty.getIncludeCoda());
        }
        if (options.isDefaultBufferNone() && pageInfo.getBufferValue() == null){
            
            pageInfo.setBuffer(0);
        }

        String javaFileName = ctxt.getServletJavaFileName();
        ServletWriter writer = null;

        try {
            
            Writer javaWriter = javaCompiler.getJavaWriter(
                                    javaFileName,
                                    ctxt.getOptions().getJavaEncoding());
            writer = new ServletWriter(new PrintWriter(javaWriter));
            ctxt.setWriter(writer);

            
            JspUtil.resetTemporaryVariableName();

	    
	    ParserController parserCtl = new ParserController(ctxt, this);
	    pageNodes = parserCtl.parse(ctxt.getJspFile());

	    if (ctxt.isPrototypeMode()) {
                
                Generator.generate(writer, this, pageNodes);
                writer.close();
                writer = null;
                return;
            }

            
            Validator.validate(this, pageNodes);

            if (log.isLoggable(Level.FINE)) {
                t2 = System.currentTimeMillis();
            }

            
            Collector.collect(this, pageNodes);

            
            
            tfp = new TagFileProcessor();
            tfp.loadTagFiles(this, pageNodes);

            if (log.isLoggable(Level.FINE)) {
                t3 = System.currentTimeMillis();
            }
        
            
            ScriptingVariabler.set(pageNodes, errDispatcher);

            
            TagPluginManager tagPluginManager = options.getTagPluginManager();
            tagPluginManager.apply(pageNodes, errDispatcher, pageInfo);

            
            TextOptimizer.concatenate(this, pageNodes);

            
            ELFunctionMapper.map(this, pageNodes);

            
            Generator.generate(writer, this, pageNodes);
            writer.close();
            writer = null;

            
            
            
            ctxt.setWriter(null);

            if (log.isLoggable(Level.FINE)) {
                t4 = System.currentTimeMillis();
                log.fine("Generated "+ javaFileName + " total="
                          + (t4-t1) + " generate=" + (t4-t3)
                          + " validate=" + (t2-t1));
            }

        } catch (Exception e) {
            if (writer != null) {
                try {
                    writer.close();
                    writer = null;
                } catch (Exception e1) {
                    
                }
            }
            
            javaCompiler.doJavaFile(false);
            throw e;
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (Exception e2) {
                    
                }
            }
        }
        
        
        if (! options.isSmapSuppressed()) {
            smapUtil.generateSmap(pageNodes);
        }

        
        
        
        
        
        tfp.removeProtoTypeFiles(ctxt.getClassFileName());
    }
private void generateJava ( ) throws Exception { long t1 , t2 , t3 , t4 ; t1 = t2 = t3 = t4 = 0 ; if ( log . isLoggable ( Level . FINE ) ) { t1 = System . currentTimeMillis ( ) ; } // Setup page info area pageInfo = new PageInfo ( new BeanRepository ( ctxt . getClassLoader ( ) , errDispatcher ) , ctxt . getJspFile ( ) ) ; JspConfig jspConfig = options . getJspConfig ( ) ; JspProperty jspProperty = jspConfig . findJspProperty ( ctxt . getJspFile ( ) ) ; /*
         * If the current uri is matched by a pattern specified in
         * a jsp-property-group in web.xml, initialize pageInfo with
         * those properties.
         */ pageInfo . setELIgnored ( JspUtil . booleanValue ( jspProperty . isELIgnored ( ) ) ) ; pageInfo . setScriptingInvalid ( JspUtil . booleanValue ( jspProperty . isScriptingInvalid ( ) ) ) ; pageInfo . setTrimDirectiveWhitespaces ( JspUtil . booleanValue ( jspProperty . getTrimSpaces ( ) ) ) ; pageInfo . setDeferredSyntaxAllowedAsLiteral ( JspUtil . booleanValue ( jspProperty . getPoundAllowed ( ) ) ) ; pageInfo . setErrorOnUndeclaredNamespace ( JspUtil . booleanValue ( jspProperty . errorOnUndeclaredNamespace ( ) ) ) ; if ( jspProperty . getIncludePrelude ( ) != null ) { pageInfo . setIncludePrelude ( jspProperty . getIncludePrelude ( ) ) ; } if ( jspProperty . getIncludeCoda ( ) != null ) { pageInfo . setIncludeCoda ( jspProperty . getIncludeCoda ( ) ) ; } if ( options . isDefaultBufferNone ( ) && pageInfo . getBufferValue ( ) == null ) { // Set to unbuffered if not specified explicitly pageInfo . setBuffer ( 0 ) ; } String javaFileName = ctxt . getServletJavaFileName ( ) ; ServletWriter writer = null ; try { // Setup the ServletWriter Writer javaWriter = javaCompiler . getJavaWriter ( javaFileName , ctxt . getOptions ( ) . getJavaEncoding ( ) ) ; writer = new ServletWriter ( new PrintWriter ( javaWriter ) ) ; ctxt . setWriter ( writer ) ; // Reset the temporary variable counter for the generator. JspUtil . resetTemporaryVariableName ( ) ; // Parse the file ParserController parserCtl = new ParserController ( ctxt , this ) ; pageNodes = parserCtl . parse ( ctxt . getJspFile ( ) ) ; if ( ctxt . isPrototypeMode ( ) ) { // generate prototype .java file for the tag file Generator . generate ( writer , this , pageNodes ) ; writer . close ( ) ; writer = null ; return ; } // Validate and process attributes Validator . validate ( this , pageNodes ) ; if ( log . isLoggable ( Level . FINE ) ) { t2 = System . currentTimeMillis ( ) ; } // Collect page info Collector . collect ( this , pageNodes ) ; // Compile (if necessary) and load the tag files referenced in // this compilation unit. tfp = new TagFileProcessor ( ) ; tfp . loadTagFiles ( this , pageNodes ) ; if ( log . isLoggable ( Level . FINE ) ) { t3 = System . currentTimeMillis ( ) ; } // Determine which custom tag needs to declare which scripting vars ScriptingVariabler . set ( pageNodes , errDispatcher ) ; // Optimizations by Tag Plugins TagPluginManager tagPluginManager = options . getTagPluginManager ( ) ; tagPluginManager . apply ( pageNodes , errDispatcher , pageInfo ) ; // Optimization: concatenate contiguous template texts. TextOptimizer . concatenate ( this , pageNodes ) ; // Generate static function mapper codes. ELFunctionMapper . map ( this , pageNodes ) ; // generate servlet .java file Generator . generate ( writer , this , pageNodes ) ; writer . close ( ) ; writer = null ; // The writer is only used during the compile, dereference // it in the JspCompilationContext when done to allow it // to be GC'd and save memory. ctxt . setWriter ( null ) ; if ( log . isLoggable ( Level . FINE ) ) { t4 = System . currentTimeMillis ( ) ; log . fine ( "Generated " + javaFileName + " total=" + ( t4 - t1 ) + " generate=" + ( t4 - t3 ) + " validate=" + ( t2 - t1 ) ) ; } } catch ( Exception e ) { if ( writer != null ) { try { writer . close ( ) ; writer = null ; } catch ( Exception e1 ) { // do nothing } } // Remove the generated .java file javaCompiler . doJavaFile ( false ) ; throw e ; } finally { if ( writer != null ) { try { writer . close ( ) ; } catch ( Exception e2 ) { // do nothing } } } // JSR45 Support if ( ! options . isSmapSuppressed ( ) ) { smapUtil . generateSmap ( pageNodes ) ; } // If any proto type .java and .class files was generated, // the prototype .java may have been replaced by the current // compilation (if the tag file is self referencing), but the // .class file need to be removed, to make sure that javac would // generate .class again from the new .java file just generated. tfp . removeProtoTypeFiles ( ctxt . getClassFileName ( ) ) ; }
Compile the jsp file into equivalent servlet in java source
Compile the jsp file into equivalent servlet in java source