billbarker    2003/02/18 23:03:45

  Modified:    jasper2/src/share/org/apache/jasper
                        JspCompilationContext.java
               jasper2/src/share/org/apache/jasper/compiler
                        TagFileProcessor.java
  Log:
  Fix for most of the pre-compile problems with TC-5.
  
  The basic problem is that with Jspc, there is no 'RuntimeContext'.  I've patched 
around the worst parts of it, but I'm the first to admit that I don't know Jasper down 
to this sort of level.
  
  Jan, Kin-Man, please review (and feel free to -1 if I've broken something).
  
  Revision  Changes    Path
  1.32      +5 -3      
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.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- JspCompilationContext.java        12 Feb 2003 16:37:11 -0000      1.31
  +++ JspCompilationContext.java        19 Feb 2003 07:03:44 -0000      1.32
  @@ -201,6 +201,8 @@
       public ClassLoader getClassLoader() {
           if( loader != null )
               return loader;
  +     if( rctxt == null) 
  +         return getClass().getClassLoader();
           return rctxt.getParentClassLoader();
       }
   
  
  
  
  1.40      +62 -49    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java
  
  Index: TagFileProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagFileProcessor.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- TagFileProcessor.java     5 Feb 2003 23:35:21 -0000       1.39
  +++ TagFileProcessor.java     19 Feb 2003 07:03:45 -0000      1.40
  @@ -412,60 +412,73 @@
   
        JspCompilationContext ctxt = compiler.getCompilationContext();
        JspRuntimeContext rctxt = ctxt.getRuntimeContext();
  -        JspServletWrapper wrapper =
  +     JspServletWrapper wrapper = null;
  +     if( rctxt != null ) {
  +         wrapper =
                (JspServletWrapper) rctxt.getWrapper(tagFilePath);
   
  -     synchronized(rctxt) {
  -         if (wrapper == null) {
  -             wrapper = new JspServletWrapper(ctxt.getServletContext(),
  -                                             ctxt.getOptions(),
  -                                             tagFilePath,
  -                                             tagInfo,
  -                                             ctxt.getRuntimeContext(),
  -                                             (JarFile) 
ctxt.getTagFileJars().get(tagFilePath));
  -             rctxt.addWrapper(tagFilePath,wrapper);
  +         synchronized(rctxt) {
  +             if (wrapper == null) {
  +                 wrapper = new JspServletWrapper(ctxt.getServletContext(),
  +                                                 ctxt.getOptions(),
  +                                                 tagFilePath,
  +                                                 tagInfo,
  +                                                 ctxt.getRuntimeContext(),
  +                                                 (JarFile) 
ctxt.getTagFileJars().get(tagFilePath));
  +                 rctxt.addWrapper(tagFilePath,wrapper);
  +             }
            }
  +     } else {
  +         wrapper = new JspServletWrapper(ctxt.getServletContext(),
  +                                         ctxt.getOptions(),
  +                                         tagFilePath,
  +                                         tagInfo,
  +                                         ctxt.getRuntimeContext(),
  +                                         
(JarFile)ctxt.getTagFileJars().get(tagFilePath)
  +                                         );
  +     }
  +                                                                          
   
  -         Class tagClazz;
  -         int tripCount = wrapper.incTripCount();
  -         try {
  -             if (tripCount > 0) {
  -                 // When tripCount is greater than zero, a circular
  -                 // dependency exists.  The circularily dependant tag
  -                 // file is compiled in prototype mode, to avoid infinite
  -                 // recursion.
  +     Class tagClazz;
  +     int tripCount = wrapper.incTripCount();
  +     try {
  +         if (tripCount > 0) {
  +             // When tripCount is greater than zero, a circular
  +             // dependency exists.  The circularily dependant tag
  +             // file is compiled in prototype mode, to avoid infinite
  +             // recursion.
   
  -                 JspServletWrapper tempWrapper
  -                     = new JspServletWrapper(ctxt.getServletContext(),
  -                                             ctxt.getOptions(),
  -                                             tagFilePath,
  -                                             tagInfo,
  -                                             ctxt.getRuntimeContext(),
  -                                             (JarFile) 
ctxt.getTagFileJars().get(tagFilePath));
  -                 tagClazz = tempWrapper.loadTagFilePrototype();
  -                 tempVector.add(
  -                     tempWrapper.getJspEngineContext().getCompiler());
  -             } else {
  -                 tagClazz = wrapper.loadTagFile();
  -             }
  -         } finally {
  -             wrapper.decTripCount();
  +             JspServletWrapper tempWrapper
  +                 = new JspServletWrapper(ctxt.getServletContext(),
  +                                         ctxt.getOptions(),
  +                                         tagFilePath,
  +                                         tagInfo,
  +                                         ctxt.getRuntimeContext(),
  +                                         (JarFile) 
ctxt.getTagFileJars().get(tagFilePath));
  +             tagClazz = tempWrapper.loadTagFilePrototype();
  +             tempVector.add(
  +                            tempWrapper.getJspEngineContext().getCompiler());
  +         } else {
  +             tagClazz = wrapper.loadTagFile();
            }
  -
  -         // Add the dependants for this tag file to its parent's
  -         // dependant list.
  -         PageInfo pageInfo = wrapper.getJspEngineContext().getCompiler().
  -                                     getPageInfo();
  -         if (pageInfo != null) {
  -             Iterator iter = pageInfo.getDependants().iterator();
  -                 if (iter.hasNext()) {
  -                     parentPageInfo.addDependant((String)iter.next());
  -             }
  +     } finally {
  +         wrapper.decTripCount();
  +     }
  +     
  +     // Add the dependants for this tag file to its parent's
  +     // dependant list.
  +     PageInfo pageInfo = wrapper.getJspEngineContext().getCompiler().
  +         getPageInfo();
  +     if (pageInfo != null) {
  +         Iterator iter = pageInfo.getDependants().iterator();
  +         if (iter.hasNext()) {
  +             parentPageInfo.addDependant((String)iter.next());
            }
  -
  -         return tagClazz;
        }
  +     
  +     return tagClazz;
       }
  +
   
       /*
        * A visitor that scan the page, looking for tag handlers that are tag
  
  
  

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

Reply via email to