kinman      2002/08/20 18:53:28

  Modified:    jasper2/src/share/org/apache/jasper/compiler Collector.java
                        Generator.java PageInfo.java
  Log:
  - Silently catch SkipPageException when the page has a tag handler from
    tag file.
  
  Revision  Changes    Path
  1.4       +12 -7     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Collector.java
  
  Index: Collector.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Collector.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Collector.java    16 Jul 2002 19:30:51 -0000      1.3
  +++ Collector.java    21 Aug 2002 01:53:28 -0000      1.4
  @@ -75,11 +75,8 @@
   public class Collector {
   
       /**
  -     * A visitor for collection info on the page
  -     * Info collected so far:
  -     *   Maximum tag nestings.
  -     *   Whether a page or a tag element (and its body) contains any scripting
  -     *       elements.
  +     * A visitor for collecting information on the page and the body of
  +     * the custom tags.
        */
       static class CollectVisitor extends Node.Visitor {
   
  @@ -90,6 +87,7 @@
        private boolean includeActionSeen = false;
        private boolean setPropertySeen = false;
        private boolean hasScriptingVars = false;
  +     private boolean tagFileSeen = false;
   
        public void visit(Node.ParamAction n) throws JasperException {
            if (n.getValue().isExpression()) {
  @@ -138,6 +136,12 @@
        }
   
           public void visit(Node.CustomTag n) throws JasperException {
  +
  +         // Remember if the tag handler is a tag file
  +         if (n.getTagFileInfo() != null) {
  +             tagFileSeen = true;
  +         }
  +
               curTagNesting++;
               if (curTagNesting > maxTagNesting) {
                   maxTagNesting = curTagNesting;
  @@ -230,6 +234,7 @@
           public void updatePageInfo(PageInfo pageInfo) {
               pageInfo.setMaxTagNesting(maxTagNesting);
            pageInfo.setScriptless(! scriptingElementSeen);
  +         pageInfo.setHasTagFile(tagFileSeen);
           }
       }
   
  
  
  
  1.73      +7 -3      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- Generator.java    20 Aug 2002 15:50:22 -0000      1.72
  +++ Generator.java    21 Aug 2002 01:53:28 -0000      1.73
  @@ -2800,6 +2800,10 @@
        */
       private void generatePostamble(Node.Nodes page) {
           out.popIndent();
  +     if (pageInfo.hasTagFile()) {
  +         // Silently catch SkipPageException
  +         out.printil("} catch (javax.servlet.jsp.SkipPageException t) {");
  +     }
           out.printil("} catch (Throwable t) {");
           out.pushIndent();
   
  
  
  
  1.9       +14 -5     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java
  
  Index: PageInfo.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- PageInfo.java     20 Aug 2002 03:52:18 -0000      1.8
  +++ PageInfo.java     21 Aug 2002 01:53:28 -0000      1.9
  @@ -94,8 +94,9 @@
       private boolean elEnabled = true;
       private boolean tagFile = false;
       private boolean isXml = false;
  -    private boolean isXmlSpecified = false;  // true is there is a
  -                                             // is-xml element
  +    private boolean isXmlSpecified = false;  // true is there is a is-xml
  +                                             // element in jsp-config
  +    private boolean hasTagFile = false;              // A custom tag is a tag file
       private Vector includePrelude;
       private Vector includeCoda;
   
  @@ -287,5 +288,13 @@
   
       public void setIncludeCoda(Vector coda) {
        includeCoda = coda;
  +    }
  +
  +    public void setHasTagFile(boolean hasTag) {
  +     hasTagFile = hasTag;
  +    }
  +
  +    public boolean hasTagFile() {
  +     return hasTagFile;
       }
   }
  
  
  

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

Reply via email to