kinman      01/12/05 10:41:47

  Modified:    jasper/src/share/org/apache/jasper Tag: tomcat_40_branch
                        Constants.java
               jasper/src/share/org/apache/jasper/compiler Tag:
                        tomcat_40_branch IncludeGenerator.java
               jasper/src/share/org/apache/jasper/runtime Tag:
                        tomcat_40_branch BodyContentImpl.java
                        JspRuntimeLibrary.java JspWriterImpl.java
                        PageContextImpl.java
  Log:
  -- Back-ported fixes from the head branch.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.13.2.1  +1 -0      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/Constants.java,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- Constants.java    2001/07/23 19:57:32     1.13
  +++ Constants.java    2001/12/05 18:41:46     1.13.2.1
  @@ -149,6 +149,7 @@
       public static final String INC_REQUEST_URI = 
"javax.servlet.include.request_uri";
       public static final String INC_SERVLET_PATH = 
"javax.servlet.include.servlet_path";
       public static final String TMP_DIR = "javax.servlet.context.tempdir";
  +    public static final String FORWARD_SEEN = "javax.servlet.forward.seen";
   
       /**
        * Public Id and the Resource path (of the cached copy) 
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +10 -3     
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java
  
  Index: IncludeGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- IncludeGenerator.java     2001/08/14 23:28:55     1.8
  +++ IncludeGenerator.java     2001/12/05 18:41:46     1.8.2.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java,v
 1.8 2001/08/14 23:28:55 craigmcc Exp $
  - * $Revision: 1.8 $
  - * $Date: 2001/08/14 23:28:55 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java,v
 1.8.2.1 2001/12/05 18:41:46 kinman Exp $
  + * $Revision: 1.8.2.1 $
  + * $Date: 2001/12/05 18:41:46 $
    *
    * ====================================================================
    * 
  @@ -186,6 +186,13 @@
               writer.println("JspRuntimeLibrary.include(request, response, " +
                              JspUtil.getExpr(page, isXml) + " + _jspx_qStr, " +
                              "out, " + flush + ");");
  +
  +        // If there is a forward in the include chain, quit.
  +        writer.println("if (\"true\".equals(request.getAttribute(\"" +
  +                Constants.FORWARD_SEEN + "\")))");
  +        writer.pushIndent();
  +        writer.println("return;");
  +     writer.popIndent();
   
        writer.popIndent();
        writer.println("}");
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.1   +12 -12    
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/BodyContentImpl.java
  
  Index: BodyContentImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/BodyContentImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.2.2.1
  diff -u -r1.2 -r1.2.2.1
  --- BodyContentImpl.java      2001/03/12 22:17:33     1.2
  +++ BodyContentImpl.java      2001/12/05 18:41:46     1.2.2.1
  @@ -82,19 +82,25 @@
       protected int bufferSize = Constants.DEFAULT_BUFFER_SIZE;
       private int nextChar;
       static String lineSeparator = System.getProperty("line.separator");
  +    private boolean closed = false;
   
  -
       public BodyContentImpl (JspWriter writer) {
           super(writer);
        cb = new char[bufferSize];
        nextChar = 0;
       }
   
  +    private void ensureOpen() throws IOException {
  +     if (closed)
  +         throw new IOException("Stream closed");
  +    }
  +
       /**
        * Write a single character.
        *
        */
       public void write(int c) throws IOException {
  +     ensureOpen();
           synchronized (lock) {
               if (nextChar >= bufferSize) {
                reAllocBuff (0);
  @@ -141,6 +147,7 @@
       public void write(char cbuf[], int off, int len) 
           throws IOException 
       {
  +     ensureOpen();
           synchronized (lock) {
   
               if ((off < 0) || (off > cbuf.length) || (len < 0) ||
  @@ -175,6 +182,7 @@
        *
        */
       public void write(String s, int off, int len) throws IOException {
  +     ensureOpen();
           synchronized (lock) {
            if (len >= bufferSize - nextChar)
                reAllocBuff(len);
  @@ -202,9 +210,7 @@
        */
   
       public void newLine() throws IOException {
  -     synchronized (lock) {
  -         write(lineSeparator);
  -     }
  +     write(lineSeparator);
       }
   
       /**
  @@ -244,7 +250,6 @@
        * method.
        *
        * @param      i   The <code>int</code> to be printed
  -     * @see        java.lang.Integer#toString(int)
        * @throws          java.io.IOException
        */
   
  @@ -260,7 +265,6 @@
        * method.
        *
        * @param      l   The <code>long</code> to be printed
  -     * @see        java.lang.Long#toString(long)
        * @throws          java.io.IOException
        */
   
  @@ -276,7 +280,6 @@
        * method.
        *
        * @param      f   The <code>float</code> to be printed
  -     * @see        java.lang.Float#toString(float)
        * @throws          java.io.IOException
        */
   
  @@ -292,7 +295,6 @@
        * #write(int)}</code> method.
        *
        * @param      d   The <code>double</code> to be printed
  -     * @see        java.lang.Double#toString(double)
        * @throws          java.io.IOException
        */
   
  @@ -342,7 +344,6 @@
        * method.
        *
        * @param      obj   The <code>Object</code> to be printed
  -     * @see        java.lang.Object#toString()
        * @throws          java.io.IOException
        */
   
  @@ -525,9 +526,8 @@
        */
   
       public void close() throws IOException {
  -        synchronized (lock) {
  -         cb = null;  
  -     }
  +     cb = null;      
  +     closed = true;
       }
   
       /**
  
  
  
  1.8.2.1   +5 -5      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java
  
  Index: JspRuntimeLibrary.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -u -r1.8 -r1.8.2.1
  --- JspRuntimeLibrary.java    2001/08/14 23:28:55     1.8
  +++ JspRuntimeLibrary.java    2001/12/05 18:41:46     1.8.2.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java,v
 1.8 2001/08/14 23:28:55 craigmcc Exp $
  - * $Revision: 1.8 $
  - * $Date: 2001/08/14 23:28:55 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspRuntimeLibrary.java,v
 1.8.2.1 2001/12/05 18:41:46 kinman Exp $
  + * $Revision: 1.8.2.1 $
  + * $Date: 2001/12/05 18:41:46 $
    *
    * ====================================================================
    * 
  @@ -89,6 +89,7 @@
   import javax.servlet.http.HttpServletResponse;
   import javax.servlet.http.HttpSession;
   import javax.servlet.jsp.JspWriter;
  +import javax.servlet.jsp.tagext.BodyContent;
   
   import org.apache.jasper.JasperException;
   import org.apache.jasper.Constants;
  @@ -803,7 +804,7 @@
                                  boolean flush)
           throws IOException, ServletException {
   
  -        if (flush)
  +        if (flush && !(out instanceof BodyContent))
               out.flush();
   
           // FIXME - It is tempting to use request.getRequestDispatcher() to
  @@ -819,6 +820,5 @@
                      new ServletResponseWrapperInclude(response, out));
   
       }
  -
   
   }
  
  
  
  1.1.4.1   +10 -13    
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspWriterImpl.java
  
  Index: JspWriterImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspWriterImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.1.4.1
  diff -u -r1.1 -r1.1.4.1
  --- JspWriterImpl.java        2000/08/12 00:52:12     1.1
  +++ JspWriterImpl.java        2001/12/05 18:41:46     1.1.4.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspWriterImpl.java,v
 1.1 2000/08/12 00:52:12 pierred Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/12 00:52:12 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/JspWriterImpl.java,v
 1.1.4.1 2001/12/05 18:41:46 kinman Exp $
  + * $Revision: 1.1.4.1 $
  + * $Date: 2001/12/05 18:41:46 $
    *
    * ====================================================================
    * 
  @@ -88,7 +88,6 @@
    */
   public class JspWriterImpl extends JspWriter {
   
  -    
       protected Writer out;
   
       protected ServletResponse response;
  @@ -99,7 +98,8 @@
       protected static int defaultCharBufferSize = Constants.DEFAULT_BUFFER_SIZE;
   
       protected boolean flushed = false;
  -
  +    protected boolean closed = false;
  +    
       public JspWriterImpl() {
        super( defaultCharBufferSize, true );
       }
  @@ -155,7 +155,7 @@
            ensureOpen();
            if (nextChar == 0)
                return;
  -            initOut();
  +         initOut();
               out.write(cb, 0, nextChar);
            nextChar = 0;
        }
  @@ -217,12 +217,14 @@
        */
       public void close() throws IOException {
           synchronized (lock) {
  -            if (response == null)
  +            if (response == null || closed)
  +             // multiple calls to close is OK
                   return;
               flush();
               if (out != null)
                   out.close();
               out = null;
  +         closed = true;
            //            cb = null;
           }
       }
  @@ -236,7 +238,7 @@
   
       /** check to make sure that the stream has not been closed */
       protected void ensureOpen() throws IOException {
  -     if (response == null)
  +     if (response == null || closed)
            throw new IOException("Stream closed");
       }
   
  @@ -434,7 +436,6 @@
        * method.
        *
        * @param      i   The <code>int</code> to be printed
  -     * @see        java.lang.Integer#toString(int)
        */
       public void print(int i) throws IOException {
        write(String.valueOf(i));
  @@ -448,7 +449,6 @@
        * method.
        *
        * @param      l   The <code>long</code> to be printed
  -     * @see        java.lang.Long#toString(long)
        */
       public void print(long l) throws IOException {
        write(String.valueOf(l));
  @@ -462,7 +462,6 @@
        * method.
        *
        * @param      f   The <code>float</code> to be printed
  -     * @see        java.lang.Float#toString(float)
        */
       public void print(float f) throws IOException {
        write(String.valueOf(f));
  @@ -476,7 +475,6 @@
        * #write(int)}</code> method.
        *
        * @param      d   The <code>double</code> to be printed
  -     * @see        java.lang.Double#toString(double)
        */
       public void print(double d) throws IOException {
        write(String.valueOf(d));
  @@ -520,7 +518,6 @@
        * method.
        *
        * @param      obj   The <code>Object</code> to be printed
  -     * @see        java.lang.Object#toString()
        */
       public void print(Object obj) throws IOException {
        write(String.valueOf(obj));
  
  
  
  1.13.2.1  +9 -4      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/PageContextImpl.java
  
  Index: PageContextImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/PageContextImpl.java,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -u -r1.13 -r1.13.2.1
  --- PageContextImpl.java      2001/08/14 23:28:55     1.13
  +++ PageContextImpl.java      2001/12/05 18:41:46     1.13.2.1
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/PageContextImpl.java,v
 1.13 2001/08/14 23:28:55 craigmcc Exp $
  - * $Revision: 1.13 $
  - * $Date: 2001/08/14 23:28:55 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/runtime/PageContextImpl.java,v
 1.13.2.1 2001/12/05 18:41:46 kinman Exp $
  + * $Revision: 1.13.2.1 $
  + * $Date: 2001/12/05 18:41:46 $
    *
    * ====================================================================
    *
  @@ -79,8 +79,8 @@
   import javax.servlet.http.HttpSession;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  +import javax.servlet.http.HttpServletResponseWrapper;
   
  -
   import javax.servlet.jsp.PageContext;
   import javax.servlet.jsp.JspFactory;
   import javax.servlet.jsp.JspWriter;
  @@ -400,6 +400,10 @@
       public void forward(String relativeUrlPath)
           throws ServletException, IOException
       {
  +        // Make sure that the response object is not the wrapper for include
  +        while (response instanceof HttpServletResponseWrapper)
  +            response = ((HttpServletResponseWrapper)response).getResponse();
  +
           String path = getAbsolutePathRelativeToContext(relativeUrlPath);
           String includeUri 
               = (String) request.getAttribute(Constants.INC_SERVLET_PATH);
  @@ -410,6 +414,7 @@
           } finally {
               if (includeUri != null)
                   request.setAttribute(Constants.INC_SERVLET_PATH, includeUri);
  +            request.setAttribute(Constants.FORWARD_SEEN, "true");
           }
       }
   
  
  
  

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

Reply via email to