remm        2004/04/13 17:14:22

  Modified:    catalina/src/share/org/apache/coyote/tomcat5 Constants.java
                        CoyoteInputStream.java CoyoteOutputStream.java
                        CoyoteReader.java CoyoteRequest.java
                        CoyoteResponse.java CoyoteWriter.java
  Log:
  - Treat the IS, OS, reader and writer as facades.
  - Those facades will be cleared, as with the request and response facades, if the
    security manager is enabled. So
  - I didn't test this too much, but the basic stuff seems to run fine.
  
  Revision  Changes    Path
  1.4       +1 -1      
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/Constants.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Constants.java    27 Feb 2004 14:58:52 -0000      1.3
  +++ Constants.java    14 Apr 2004 00:14:22 -0000      1.4
  @@ -48,7 +48,7 @@
       /**
        * Security flag.
        */
  -    protected static final boolean SECURITY = 
  +    public static final boolean SECURITY = 
           (System.getSecurityManager() != null);
   
   
  
  
  
  1.5       +11 -0     
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteInputStream.java
  
  Index: CoyoteInputStream.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteInputStream.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CoyoteInputStream.java    27 Feb 2004 14:58:52 -0000      1.4
  +++ CoyoteInputStream.java    14 Apr 2004 00:14:22 -0000      1.5
  @@ -49,6 +49,17 @@
       }
   
   
  +    // -------------------------------------------------------- Package Methods
  +
  +
  +    /**
  +     * Clear facade.
  +     */
  +    void clear() {
  +        ib = null;
  +    }
  +
  +
       // --------------------------------------------- ServletInputStream Methods
   
   
  
  
  
  1.5       +11 -0     
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteOutputStream.java
  
  Index: CoyoteOutputStream.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteOutputStream.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CoyoteOutputStream.java   6 Apr 2004 00:55:07 -0000       1.4
  +++ CoyoteOutputStream.java   14 Apr 2004 00:14:22 -0000      1.5
  @@ -45,6 +45,17 @@
       }
   
   
  +    // -------------------------------------------------------- Package Methods
  +
  +
  +    /**
  +     * Clear facade.
  +     */
  +    void clear() {
  +        ob = null;
  +    }
  +
  +
       // --------------------------------------------------- OutputStream Methods
   
   
  
  
  
  1.6       +16 -1     
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteReader.java
  
  Index: CoyoteReader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteReader.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CoyoteReader.java 13 Apr 2004 15:18:42 -0000      1.5
  +++ CoyoteReader.java 14 Apr 2004 00:14:22 -0000      1.6
  @@ -43,7 +43,7 @@
       protected InputBuffer ib;
   
   
  -    protected final char[] lineBuffer = new char[MAX_LINE_LENGTH];
  +    protected char[] lineBuffer = null;
   
   
       // ----------------------------------------------------------- Constructors
  @@ -55,6 +55,17 @@
       }
   
   
  +    // -------------------------------------------------------- Package Methods
  +
  +
  +    /**
  +     * Clear facade.
  +     */
  +    void clear() {
  +        ib = null;
  +    }
  +
  +
       // --------------------------------------------------------- Reader Methods
   
   
  @@ -113,6 +124,10 @@
   
       public String readLine()
           throws IOException {
  +
  +        if (lineBuffer == null) {
  +            lineBuffer = new char[MAX_LINE_LENGTH];
  +       }
   
           String result = null;
   
  
  
  
  1.34      +27 -5     
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteRequest.java
  
  Index: CoyoteRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteRequest.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- CoyoteRequest.java        6 Apr 2004 00:55:07 -0000       1.33
  +++ CoyoteRequest.java        14 Apr 2004 00:14:22 -0000      1.34
  @@ -212,7 +212,7 @@
       /**
        * Reader.
        */
  -    protected BufferedReader reader = new CoyoteReader(inputBuffer);
  +    protected CoyoteReader reader = new CoyoteReader(inputBuffer);
   
   
       /**
  @@ -406,9 +406,19 @@
   
           mappingData.recycle();
   
  -        if ((Constants.SECURITY) && (facade != null)) {
  -            facade.clear();
  -            facade = null;
  +        if (Constants.SECURITY) {
  +            if (facade != null) {
  +                facade.clear();
  +                facade = null;
  +            }
  +            if (inputStream != null) {
  +                inputStream.clear();
  +                inputStream = null;
  +            }
  +            if (reader != null) {
  +                reader.clear();
  +                reader = null;
  +            }
           }
   
       }
  @@ -625,6 +635,9 @@
        * Return the input stream associated with this Request.
        */
       public InputStream getStream() {
  +        if (inputStream == null) {
  +            inputStream = new CoyoteInputStream(inputBuffer);
  +        }
           return inputStream;
       }
   
  @@ -717,6 +730,9 @@
        */
       public ServletInputStream createInputStream() 
           throws IOException {
  +        if (inputStream == null) {
  +            inputStream = new CoyoteInputStream(inputBuffer);
  +        }
           return inputStream;
       }
   
  @@ -987,6 +1003,9 @@
                   (sm.getString("coyoteRequest.getInputStream.ise"));
   
           usingInputStream = true;
  +        if (inputStream == null) {
  +            inputStream = new CoyoteInputStream(inputBuffer);
  +        }
           return inputStream;
   
       }
  @@ -1132,6 +1151,9 @@
   
           usingReader = true;
           inputBuffer.checkConverter();
  +        if (reader == null) {
  +            reader = new CoyoteReader(inputBuffer);
  +        }
           return reader;
   
       }
  
  
  
  1.13      +31 -6     
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteResponse.java
  
  Index: CoyoteResponse.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteResponse.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- CoyoteResponse.java       27 Feb 2004 14:58:53 -0000      1.12
  +++ CoyoteResponse.java       14 Apr 2004 00:14:22 -0000      1.13
  @@ -263,13 +263,23 @@
           
           cookies.clear();
   
  -        if ((Constants.SECURITY) && (facade != null)) {
  -            facade.clear();
  -            facade = null;
  +        if (Constants.SECURITY) {
  +            if (facade != null) {
  +                facade.clear();
  +                facade = null;
  +            }
  +            if (outputStream != null) {
  +                outputStream.clear();
  +                outputStream = null;
  +            }
  +            if (writer != null) {
  +                writer.clear();
  +                writer = null;
  +            }
  +        } else {
  +            writer.recycle();
           }
   
  -        writer.recycle();
  -
       }
   
   
  @@ -376,6 +386,9 @@
        * Return the output stream associated with this Response.
        */
       public OutputStream getStream() {
  +        if (outputStream == null) {
  +            outputStream = new CoyoteOutputStream(outputBuffer);
  +        }
           return outputStream;
       }
   
  @@ -433,6 +446,9 @@
       public ServletOutputStream createOutputStream() 
           throws IOException {
           // Probably useless
  +        if (outputStream == null) {
  +            outputStream = new CoyoteOutputStream(outputBuffer);
  +        }
           return outputStream;
       }
   
  @@ -488,6 +504,9 @@
       public PrintWriter getReporter() throws IOException {
           if (outputBuffer.isNew()) {
               outputBuffer.checkConverter();
  +            if (writer == null) {
  +                writer = new CoyoteWriter(outputBuffer);
  +            }
               return writer;
           } else {
               return null;
  @@ -540,6 +559,9 @@
                   (sm.getString("coyoteResponse.getOutputStream.ise"));
   
           usingOutputStream = true;
  +        if (outputStream == null) {
  +            outputStream = new CoyoteOutputStream(outputBuffer);
  +        }
           return outputStream;
   
       }
  @@ -569,6 +591,9 @@
   
           usingWriter = true;
           outputBuffer.checkConverter();
  +        if (writer == null) {
  +            writer = new CoyoteWriter(outputBuffer);
  +        }
           return writer;
   
       }
  
  
  
  1.5       +8 -0      
jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteWriter.java
  
  Index: CoyoteWriter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteWriter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CoyoteWriter.java 6 Apr 2004 00:55:07 -0000       1.4
  +++ CoyoteWriter.java 14 Apr 2004 00:14:22 -0000      1.5
  @@ -55,6 +55,14 @@
   
   
       /**
  +     * Clear facade.
  +     */
  +    void clear() {
  +        ob = null;
  +    }
  +
  +
  +    /**
        * Recycle.
        */
       void recycle() {
  
  
  

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

Reply via email to