Author: markt
Date: Tue Aug 16 16:50:17 2011
New Revision: 1158367

URL: http://svn.apache.org/viewvc?rev=1158367&view=rev
Log:
Merge HTTP connector refactoring from trunk

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java
    
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java
    
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
    
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
    
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
    
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalOutputBuffer.java
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java
    tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestGzipOutputFilter.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 16 16:50:17 2011
@@ -1 +1 @@
-/tomcat/trunk:1156171,1156276,1156304,1156530,1156602,1157015,1157018,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158176
+/tomcat/trunk:1156171,1156276,1156304,1156530,1156602,1157015,1157018,1157151,1157198,1157204,1157810,1157832,1157834,1157847,1157908,1157939,1158155,1158160,1158176,1158195,1158198-1158199,1158227,1158331,1158334-1158335

Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpNioProcessor.java Tue 
Aug 16 16:50:17 2011
@@ -101,7 +101,6 @@ public class AjpNioProcessor extends Abs
         this.socket = socket.getSocket();
         
         long soTimeout = endpoint.getSoTimeout();
-        int keepAliveTimeout = endpoint.getKeepAliveTimeout();
 
         // Error flag
         error = false;

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java 
Tue Aug 16 16:50:17 2011
@@ -612,14 +612,14 @@ public abstract class AbstractHttp11Proc
      * Exposes input buffer to super class to allow better code re-use.
      * @return  The input buffer used by the processor. 
      */
-    protected abstract AbstractInputBuffer getInputBuffer();
+    protected abstract AbstractInputBuffer<S> getInputBuffer();
 
     
     /**
      * Exposes output buffer to super class to allow better code re-use.
      * @return  The output buffer used by the processor. 
      */
-    protected abstract AbstractOutputBuffer getOutputBuffer();
+    protected abstract AbstractOutputBuffer<S> getOutputBuffer();
 
     
     /**
@@ -747,7 +747,7 @@ public abstract class AbstractHttp11Proc
             InputFilter savedBody = new SavedRequestInputFilter(body);
             savedBody.setRequest(request);
 
-            AbstractInputBuffer internalBuffer = (AbstractInputBuffer)
+            AbstractInputBuffer<S> internalBuffer = (AbstractInputBuffer<S>)
                 request.getInputBuffer();
             internalBuffer.addActiveFilter(savedBody);
         } else if (actionCode == ActionCode.ASYNC_START) {
@@ -778,6 +778,14 @@ public abstract class AbstractHttp11Proc
     
 
     /**
+     * Processors (currently only HTTP BIO) may elect to disable HTTP 
keep-alive
+     * in some circumstances. This method allows the processor implementation 
to
+     * determine if keep-alive should be disabled or not. 
+     */
+    protected abstract boolean disableKeepAlive();
+
+
+    /**
      * After reading the request headers, we have to setup the request filters.
      */
     protected void prepareRequest() {

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -17,15 +17,16 @@
 package org.apache.coyote.http11;
 
 import java.io.IOException;
-import java.io.InputStream;
 
 import org.apache.coyote.InputBuffer;
 import org.apache.coyote.Request;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.http.MimeHeaders;
+import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.SocketWrapper;
 import org.apache.tomcat.util.res.StringManager;
 
-public abstract class AbstractInputBuffer implements InputBuffer{
+public abstract class AbstractInputBuffer<S> implements InputBuffer{
 
     protected static final boolean[] HTTP_TOKEN_CHAR = new boolean[128];
 
@@ -137,12 +138,6 @@ public abstract class AbstractInputBuffe
 
 
     /**
-     * Underlying input stream.
-     */
-    protected InputStream inputStream;
-
-
-    /**
      * Underlying input buffer.
      */
     protected InputBuffer inputStreamInputBuffer;
@@ -171,28 +166,6 @@ public abstract class AbstractInputBuffe
 
 
     /**
-     * Set the underlying socket input stream.
-     */
-    public void setInputStream(InputStream inputStream) {
-
-        // FIXME: Check for null ?
-
-        this.inputStream = inputStream;
-
-    }
-
-
-    /**
-     * Get the underlying socket input stream.
-     */
-    public InputStream getInputStream() {
-
-        return inputStream;
-
-    }
-
-
-    /**
      * Add an input filter to the filter library.
      */
     public void addFilter(InputFilter filter) {
@@ -252,12 +225,16 @@ public abstract class AbstractInputBuffe
     }
 
 
-    public abstract boolean parseRequestLine(boolean useAvailableDataOnly) 
throws IOException;
+    public abstract boolean parseRequestLine(boolean useAvailableDataOnly)
+        throws IOException;
     
     public abstract boolean parseHeaders() throws IOException;
     
     protected abstract boolean fill(boolean block) throws IOException; 
 
+    protected abstract void init(SocketWrapper<S> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException;
+
 
     // --------------------------------------------------------- Public Methods
 
@@ -271,7 +248,6 @@ public abstract class AbstractInputBuffe
         // Recycle Request object
         request.recycle();
 
-        inputStream = null;
         lastValid = 0;
         pos = 0;
         lastActiveFilter = -1;

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -28,9 +28,11 @@ import org.apache.tomcat.util.buf.ByteCh
 import org.apache.tomcat.util.buf.CharChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
 import org.apache.tomcat.util.http.HttpMessages;
+import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.SocketWrapper;
 import org.apache.tomcat.util.res.StringManager;
 
-public abstract class AbstractOutputBuffer implements OutputBuffer{
+public abstract class AbstractOutputBuffer<S> implements OutputBuffer{
 
     // ----------------------------------------------------- Instance Variables
 
@@ -316,7 +318,11 @@ public abstract class AbstractOutputBuff
             activeFilters[lastActiveFilter].end();
         finished = true;
     }
+
     
+    public abstract void init(SocketWrapper<S> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException;
+
     public abstract void sendAck() throws IOException;
     
     protected abstract void commit() throws IOException;

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 
Tue Aug 16 16:50:17 2011
@@ -174,22 +174,26 @@ public class Http11AprProcessor extends 
 
         // Setting up the socket
         this.socket = socketWrapper;
-        long socketRef = socketWrapper.getSocket().longValue();
-        inputBuffer.setSocket(socketRef);
-        outputBuffer.setSocket(socketRef);
+        inputBuffer.init(socketWrapper, endpoint);
+        outputBuffer.init(socketWrapper, endpoint);
 
         // Error flag
         error = false;
         keepAlive = true;
         comet = false;
 
-        int keepAliveLeft = maxKeepAliveRequests;
-        long soTimeout = endpoint.getSoTimeout();
-        
+        int soTimeout = endpoint.getSoTimeout();
+
+        if (disableKeepAlive()) {
+            socketWrapper.setKeepAliveLeft(0);
+        }
+
         boolean keptAlive = false;
         boolean openSocket = false;
         boolean sendfileInProgress = false;
 
+        long socketRef = socketWrapper.getSocket().longValue();
+
         while (!error && keepAlive && !comet && !isAsync() && 
!endpoint.isPaused()) {
 
             // Parsing the request header
@@ -251,8 +255,12 @@ public class Http11AprProcessor extends 
                 }
             }
 
-            if (maxKeepAliveRequests > 0 && --keepAliveLeft == 0)
+            if (maxKeepAliveRequests == 1) {
                 keepAlive = false;
+            } else if (maxKeepAliveRequests > 0 &&
+                    socketWrapper.decrementKeepAlive() <= 0) {
+                keepAlive = false;
+            }
 
             // Process the request in the adapter
             if (!error) {
@@ -349,6 +357,12 @@ public class Http11AprProcessor extends 
 
 
     @Override
+    protected boolean disableKeepAlive() {
+        return false;
+    }
+
+
+    @Override
     protected void resetTimeouts() {
         // NOOP for APR
     }
@@ -619,12 +633,12 @@ public class Http11AprProcessor extends 
     }
 
     @Override
-    protected AbstractInputBuffer getInputBuffer() {
+    protected AbstractInputBuffer<Long> getInputBuffer() {
         return inputBuffer;
     }
 
     @Override
-    protected AbstractOutputBuffer getOutputBuffer() {
+    protected AbstractOutputBuffer<Long> getOutputBuffer() {
         return outputBuffer;
     }
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 
Tue Aug 16 16:50:17 2011
@@ -247,6 +247,7 @@ public class Http11AprProtocol extends A
                     proto.getMaxTrailerSize());
             processor.setAdapter(proto.adapter);
             processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests());
+            processor.setKeepAliveTimeout(proto.getKeepAliveTimeout());
             processor.setConnectionUploadTimeout(
                     proto.getConnectionUploadTimeout());
             processor.setDisableUploadTimeout(proto.getDisableUploadTimeout());

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java 
Tue Aug 16 16:50:17 2011
@@ -123,7 +123,6 @@ public class Http11NioProcessor extends 
         throws IOException {
 
         long soTimeout = endpoint.getSoTimeout();
-        int keepAliveTimeout = endpoint.getKeepAliveTimeout();
 
         RequestInfo rp = request.getRequestProcessor();
         final NioEndpoint.KeyAttachment attach = 
(NioEndpoint.KeyAttachment)socket.getSocket().getAttachment(false);
@@ -176,7 +175,6 @@ public class Http11NioProcessor extends 
         if (!error && attach != null &&
                 asyncStateMachine.isAsyncDispatching()) {
             long soTimeout = endpoint.getSoTimeout();
-            int keepAliveTimeout = endpoint.getKeepAliveTimeout();
 
             //reset the timeout
             if (keepAlive && keepAliveTimeout>0) {
@@ -205,18 +203,19 @@ public class Http11NioProcessor extends 
 
         // Setting up the socket
         this.socket = socketWrapper;
-        inputBuffer.setSocket(this.socket.getSocket());
-        outputBuffer.setSocket(this.socket.getSocket());
-        inputBuffer.setSelectorPool(((NioEndpoint)endpoint).getSelectorPool());
-        
outputBuffer.setSelectorPool(((NioEndpoint)endpoint).getSelectorPool());
+        inputBuffer.init(socketWrapper, endpoint);
+        outputBuffer.init(socketWrapper, endpoint);
 
         // Error flag
         error = false;
         keepAlive = true;
         comet = false;
         
-        long soTimeout = endpoint.getSoTimeout();
-        int keepAliveTimeout = endpoint.getKeepAliveTimeout();
+        int soTimeout = endpoint.getSoTimeout();
+
+        if (disableKeepAlive()) {
+            socketWrapper.setKeepAliveLeft(0);
+        }
 
         boolean keptAlive = false;
         boolean openSocket = false;
@@ -228,7 +227,7 @@ public class Http11NioProcessor extends 
             // Parsing the request header
             try {
                 if( !disableUploadTimeout && keptAlive && soTimeout > 0 ) {
-                    
socketWrapper.getSocket().getIOChannel().socket().setSoTimeout((int)soTimeout);
+                    
socketWrapper.getSocket().getIOChannel().socket().setSoTimeout(soTimeout);
                 }
                 if (!inputBuffer.parseRequestLine(keptAlive)) {
                     // Haven't finished reading the request so keep the socket
@@ -304,10 +303,12 @@ public class Http11NioProcessor extends 
                 }
             }
             
-            if (maxKeepAliveRequests == 1 )
+            if (maxKeepAliveRequests == 1) {
                 keepAlive = false;
-            if (maxKeepAliveRequests > 0 && socketWrapper.decrementKeepAlive() 
<= 0)
+            } else if (maxKeepAliveRequests > 0 &&
+                    socketWrapper.decrementKeepAlive() <= 0) {
                 keepAlive = false;
+            }
 
             // Process the request in the adapter
             if (!error) {
@@ -402,6 +403,12 @@ public class Http11NioProcessor extends 
 
 
     @Override
+    protected boolean disableKeepAlive() {
+        return false;
+    }
+
+
+    @Override
     public void recycleInternal() {
         socket = null;
         cometClose = false;
@@ -647,12 +654,12 @@ public class Http11NioProcessor extends 
     }
 
     @Override
-    protected AbstractInputBuffer getInputBuffer() {
+    protected AbstractInputBuffer<NioChannel> getInputBuffer() {
         return inputBuffer;
     }
 
     @Override
-    protected AbstractOutputBuffer getOutputBuffer() {
+    protected AbstractOutputBuffer<NioChannel> getOutputBuffer() {
         return outputBuffer;
     }
 

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java 
Tue Aug 16 16:50:17 2011
@@ -277,6 +277,7 @@ public class Http11NioProtocol extends A
                     proto.getMaxTrailerSize());
             processor.setAdapter(proto.adapter);
             processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests());
+            processor.setKeepAliveTimeout(proto.getKeepAliveTimeout());
             processor.setConnectionUploadTimeout(
                     proto.getConnectionUploadTimeout());
             processor.setDisableUploadTimeout(proto.getDisableUploadTimeout());

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java Tue 
Aug 16 16:50:17 2011
@@ -138,30 +138,17 @@ public class Http11Processor extends Abs
 
         // Setting up the I/O
         this.socket = socketWrapper;
-        inputBuffer.setInputStream(socket.getSocket().getInputStream());
-        outputBuffer.setOutputStream(socket.getSocket().getOutputStream());
+        inputBuffer.init(socketWrapper, endpoint);
+        outputBuffer.init(socketWrapper, endpoint);
 
         // Error flag
         error = false;
         keepAlive = true;
+        comet = false;
 
-        if (maxKeepAliveRequests > 0) {
-            socketWrapper.decrementKeepAlive();
-        }
-        
         int soTimeout = endpoint.getSoTimeout();
 
-        int threadRatio = -1;   
-        // These may return zero or negative values     
-        // Only calculate a thread ratio when both are >0 to ensure we get a   
 
-        // sensible result      
-        if (endpoint.getCurrentThreadsBusy() >0 &&      
-                endpoint.getMaxThreads() >0) {      
-            threadRatio = (endpoint.getCurrentThreadsBusy() * 100)      
-                    / endpoint.getMaxThreads();     
-        }   
-        // Disable keep-alive if we are running low on threads      
-        if (threadRatio > getDisableKeepAlivePercentage()) {     
+        if (disableKeepAlive()) {
             socketWrapper.setKeepAliveLeft(0);
         }
 
@@ -268,7 +255,10 @@ public class Http11Processor extends Abs
                 }
             }
 
-            if (socketWrapper.getKeepAliveLeft() == 0) {
+            if (maxKeepAliveRequests == 1) {
+                keepAlive = false;
+            } else if (maxKeepAliveRequests > 0 &&
+                    socketWrapper.decrementKeepAlive() <= 0) {
                 keepAlive = false;
             }
 
@@ -350,10 +340,6 @@ public class Http11Processor extends Abs
             if (isAsync() || error || inputBuffer.lastValid == 0) {
                 break;
             }
-            
-            if (maxKeepAliveRequests > 0) {
-                socketWrapper.decrementKeepAlive();
-            }
         }
 
         rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
@@ -372,6 +358,26 @@ public class Http11Processor extends Abs
     
     
     @Override
+    protected boolean disableKeepAlive() {
+        int threadRatio = -1;   
+        // These may return zero or negative values     
+        // Only calculate a thread ratio when both are >0 to ensure we get a   
 
+        // sensible result      
+        if (endpoint.getCurrentThreadsBusy() >0 &&      
+                endpoint.getMaxThreads() >0) {      
+            threadRatio = (endpoint.getCurrentThreadsBusy() * 100)      
+                    / endpoint.getMaxThreads();     
+        }   
+        // Disable keep-alive if we are running low on threads      
+        if (threadRatio > getDisableKeepAlivePercentage()) {     
+            return true;
+        }
+        
+        return false;
+    }
+
+
+    @Override
     protected void resetTimeouts() {
         // NOOP for APR
     }
@@ -558,12 +564,12 @@ public class Http11Processor extends Abs
     }
 
     @Override
-    protected AbstractInputBuffer getInputBuffer() {
+    protected AbstractInputBuffer<Socket> getInputBuffer() {
         return inputBuffer;
     }
 
     @Override
-    protected AbstractOutputBuffer getOutputBuffer() {
+    protected AbstractOutputBuffer<Socket> getOutputBuffer() {
         return outputBuffer;
     }
 

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -30,6 +30,8 @@ import org.apache.tomcat.jni.Socket;
 import org.apache.tomcat.jni.Status;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.SocketWrapper;
 
 /**
  * Implementation of InputBuffer which provides HTTP request header parsing as
@@ -37,7 +39,7 @@ import org.apache.tomcat.util.buf.Messag
  *
  * @author <a href="mailto:r...@apache.org";>Remy Maucherat</a>
  */
-public class InternalAprInputBuffer extends AbstractInputBuffer {
+public class InternalAprInputBuffer extends AbstractInputBuffer<Long> {
 
     private static final Log log =
         LogFactory.getLog(InternalAprInputBuffer.class);
@@ -78,38 +80,17 @@ public class InternalAprInputBuffer exte
     /**
      * Direct byte buffer used to perform actual reading.
      */
-    protected ByteBuffer bbuf;
+    private ByteBuffer bbuf;
 
 
     /**
      * Underlying socket.
      */
-    protected long socket;
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * Set the underlying socket.
-     */
-    public void setSocket(long socket) {
-        this.socket = socket;
-        Socket.setrbb(this.socket, bbuf);
-    }
-
-
-    /**
-     * Get the underlying socket input stream.
-     */
-    public long getSocket() {
-        return socket;
-    }
+    private long socket;
 
 
     // --------------------------------------------------------- Public Methods
 
-
     /**
      * Recycle the input buffer. This should be called when closing the 
      * connection.
@@ -341,7 +322,7 @@ public class InternalAprInputBuffer exte
      * HTTP header parsing is done
      */
     @SuppressWarnings("null") // headerValue cannot be null
-    public boolean parseHeader()
+    private boolean parseHeader()
         throws IOException {
 
         //
@@ -567,6 +548,14 @@ public class InternalAprInputBuffer exte
 
     // ------------------------------------------------------ Protected Methods
 
+    @Override
+    protected void init(SocketWrapper<Long> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException {
+
+        socket = socketWrapper.getSocket().longValue();
+        Socket.setrbb(this.socket, bbuf);
+    }
+
 
     @Override
     protected boolean fill(boolean block) throws IOException {
@@ -666,11 +655,6 @@ public class InternalAprInputBuffer exte
             pos = lastValid;
 
             return (length);
-
         }
-
-
     }
-
-
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -26,13 +26,15 @@ import org.apache.coyote.Response;
 import org.apache.tomcat.jni.Socket;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.http.HttpMessages;
+import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.SocketWrapper;
 
 /**
  * Output buffer.
  * 
  * @author <a href="mailto:r...@apache.org";>Remy Maucherat</a>
  */
-public class InternalAprOutputBuffer extends AbstractOutputBuffer {
+public class InternalAprOutputBuffer extends AbstractOutputBuffer<Long> {
 
 
     // ----------------------------------------------------------- Constructors
@@ -72,30 +74,26 @@ public class InternalAprOutputBuffer ext
     /**
      * Underlying socket.
      */
-    protected long socket;
+    private long socket;
 
 
     /**
      * Direct byte buffer used for writing.
      */
-    protected ByteBuffer bbuf = null;
+    private ByteBuffer bbuf = null;
 
     
-    // ------------------------------------------------------------- Properties
+    // --------------------------------------------------------- Public Methods
 
+    @Override
+    public void init(SocketWrapper<Long> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException {
 
-    /**
-     * Set the underlying socket.
-     */
-    public void setSocket(long socket) {
-        this.socket = socket;
+        socket = socketWrapper.getSocket().longValue();
         Socket.setsbb(this.socket, bbuf);
     }
 
 
-    // --------------------------------------------------------- Public Methods
-
-
     /**
      * Flush the response.
      * 
@@ -197,11 +195,10 @@ public class InternalAprOutputBuffer ext
     }
 
 
-
     /**
      * Callback to write data from the buffer.
      */
-    protected void flushBuffer()
+    private void flushBuffer()
         throws IOException {
         if (bbuf.position() > 0) {
             if (Socket.sendbb(socket, 0, bbuf.position()) < 0) {
@@ -253,6 +250,4 @@ public class InternalAprOutputBuffer ext
             return byteCount;
         }
     }
-
-
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -18,6 +18,8 @@ package org.apache.coyote.http11;
 
 import java.io.EOFException;
 import java.io.IOException;
+import java.io.InputStream;
+import java.net.Socket;
 import java.nio.charset.Charset;
 
 import org.apache.coyote.InputBuffer;
@@ -26,6 +28,8 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.SocketWrapper;
 
 /**
  * Implementation of InputBuffer which provides HTTP request header parsing as
@@ -33,12 +37,18 @@ import org.apache.tomcat.util.buf.Messag
  *
  * @author <a href="mailto:r...@apache.org";>Remy Maucherat</a>
  */
-public class InternalInputBuffer extends AbstractInputBuffer {
+public class InternalInputBuffer extends AbstractInputBuffer<Socket> {
 
     private static final Log log = 
LogFactory.getLog(InternalInputBuffer.class);
 
 
     /**
+     * Underlying input stream.
+     */
+    private InputStream inputStream;
+
+
+    /**
      * Default constructor.
      */
     public InternalInputBuffer(Request request, int headerBufferSize) {
@@ -59,6 +69,7 @@ public class InternalInputBuffer extends
 
     }
 
+    
     /**
      * Read the request line. This function is meant to be used during the 
      * HTTP request header parsing. Do NOT attempt to read the request body 
@@ -267,7 +278,7 @@ public class InternalInputBuffer extends
      * HTTP header parsing is done
      */
     @SuppressWarnings("null") // headerValue cannot be null
-    public boolean parseHeader()
+    private boolean parseHeader()
         throws IOException {
 
         //
@@ -428,9 +439,24 @@ public class InternalInputBuffer extends
     }
 
 
+    @Override
+    public void recycle() {
+        super.recycle();
+        inputStream = null;
+    }
+
+
     // ------------------------------------------------------ Protected Methods
 
 
+    @Override
+    protected void init(SocketWrapper<Socket> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException {
+        inputStream = socketWrapper.getSocket().getInputStream();
+    }
+
+
+
     private void skipLine(int start) throws IOException {
         boolean eol = false;
         int lastRealByte = start;
@@ -539,11 +565,6 @@ public class InternalInputBuffer extends
             pos = lastValid;
 
             return (length);
-
         }
-
-
     }
-
-
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -25,9 +25,11 @@ import org.apache.coyote.InputBuffer;
 import org.apache.coyote.Request;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.NioChannel;
 import org.apache.tomcat.util.net.NioEndpoint;
 import org.apache.tomcat.util.net.NioSelectorPool;
+import org.apache.tomcat.util.net.SocketWrapper;
 
 /**
  * Implementation of InputBuffer which provides HTTP request header parsing as
@@ -36,7 +38,7 @@ import org.apache.tomcat.util.net.NioSel
  * @author <a href="mailto:r...@apache.org";>Remy Maucherat</a>
  * @author Filip Hanik
  */
-public class InternalNioInputBuffer extends AbstractInputBuffer {
+public class InternalNioInputBuffer extends AbstractInputBuffer<NioChannel> {
 
     private static final org.apache.juli.logging.Log log =
         
org.apache.juli.logging.LogFactory.getLog(InternalNioInputBuffer.class);
@@ -84,22 +86,22 @@ public class InternalNioInputBuffer exte
      * Parsing state - used for non blocking parsing so that
      * when more data arrives, we can pick up where we left off.
      */
-    protected boolean parsingRequestLine;
-    protected int parsingRequestLinePhase = 0;
-    protected boolean parsingRequestLineEol = false;
-    protected int parsingRequestLineStart = 0;
-    protected int parsingRequestLineQPos = -1;
-    protected HeaderParsePosition headerParsePos;
+    private boolean parsingRequestLine;
+    private int parsingRequestLinePhase = 0;
+    private boolean parsingRequestLineEol = false;
+    private int parsingRequestLineStart = 0;
+    private int parsingRequestLineQPos = -1;
+    private HeaderParsePosition headerParsePos;
 
     /**
      * Underlying socket.
      */
-    protected NioChannel socket;
+    private NioChannel socket;
     
     /**
      * Selector pool, for blocking reads and blocking writes
      */
-    protected NioSelectorPool pool;
+    private NioSelectorPool pool;
 
 
     /**
@@ -124,47 +126,8 @@ public class InternalNioInputBuffer exte
      */
     private int skipBlankLinesBytes;
 
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * Set the underlying socket.
-     */
-    public void setSocket(NioChannel socket) {
-        this.socket = socket;
-        socketReadBufferSize = 
socket.getBufHandler().getReadBuffer().capacity();
-        int bufLength = skipBlankLinesSize + headerBufferSize
-                + socketReadBufferSize;
-        if (buf == null || buf.length < bufLength) {
-            buf = new byte[bufLength];
-        }
-    }
-    
-    /**
-     * Get the underlying socket input stream.
-     */
-    public NioChannel getSocket() {
-        return socket;
-    }
-
-    public void setSelectorPool(NioSelectorPool pool) { 
-        this.pool = pool;
-    }
-    
-    public NioSelectorPool getSelectorPool() {
-        return pool;
-    }
-
 
     // --------------------------------------------------------- Public Methods
-    /**
-     * Issues a non blocking read
-     * @return int
-     * @throws IOException
-     */
-    public int nbRead() throws IOException {
-        return readSocket(true,false);
-    }
 
     /**
      * Recycle the input buffer. This should be called when closing the 
@@ -429,18 +392,18 @@ public class InternalNioInputBuffer exte
         if ( block ) {
             Selector selector = null;
             try {
-                selector = getSelectorPool().get();
+                selector = pool.get();
             } catch ( IOException x ) {
                 // Ignore
             }
             try {
                 NioEndpoint.KeyAttachment att = 
(NioEndpoint.KeyAttachment)socket.getAttachment(false);
                 if ( att == null ) throw new IOException("Key must be 
cancelled.");
-                nRead = 
getSelectorPool().read(socket.getBufHandler().getReadBuffer(),socket,selector,att.getTimeout());
+                nRead = 
pool.read(socket.getBufHandler().getReadBuffer(),socket,selector,att.getTimeout());
             } catch ( EOFException eof ) {
                 nRead = -1;
             } finally { 
-                if ( selector != null ) getSelectorPool().put(selector);
+                if ( selector != null ) pool.put(selector);
             }
         } else {
             nRead = socket.read(socket.getBufHandler().getReadBuffer());
@@ -500,7 +463,7 @@ public class InternalNioInputBuffer exte
      * @return false after reading a blank line (which indicates that the
      * HTTP header parsing is done
      */
-    public HeaderParseStatus parseHeader()
+    private HeaderParseStatus parseHeader()
         throws IOException {
 
         //
@@ -677,6 +640,10 @@ public class InternalNioInputBuffer exte
         return HeaderParseStatus.HAVE_MORE_HEADERS;
     }
     
+    public int getParsingRequestLinePhase() {
+        return parsingRequestLinePhase;
+    }
+
     private HeaderParseStatus skipLine() throws IOException {
         headerParsePos = HeaderParsePosition.HEADER_SKIPLINE;
         boolean eol = false;
@@ -712,7 +679,7 @@ public class InternalNioInputBuffer exte
         return HeaderParseStatus.HAVE_MORE_HEADERS;
     }
 
-    protected HeaderParseData headerData = new HeaderParseData();
+    private HeaderParseData headerData = new HeaderParseData();
     public static class HeaderParseData {
         int start = 0;
         int realPos = 0;
@@ -743,6 +710,24 @@ public class InternalNioInputBuffer exte
 
     // ------------------------------------------------------ Protected Methods
 
+    @Override
+    protected void init(SocketWrapper<NioChannel> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException {
+
+        socket = socketWrapper.getSocket();
+        socketReadBufferSize =
+            socket.getBufHandler().getReadBuffer().capacity();
+
+        int bufLength = skipBlankLinesSize + headerBufferSize
+                + socketReadBufferSize;
+        if (buf == null || buf.length < bufLength) {
+            buf = new byte[bufLength];
+        }
+
+        pool = ((NioEndpoint)endpoint).getSelectorPool();
+    }
+
+
     /**
      * Fill the internal buffer using data from the underlying input stream.
      * 
@@ -804,16 +789,6 @@ public class InternalNioInputBuffer exte
             pos = lastValid;
 
             return (length);
-
         }
-
-
-    }
-
-
-    public int getParsingRequestLinePhase() {
-        return parsingRequestLinePhase;
     }
-
-
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -27,9 +27,11 @@ import org.apache.coyote.Response;
 import org.apache.tomcat.util.MutableInteger;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.http.HttpMessages;
+import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.NioChannel;
 import org.apache.tomcat.util.net.NioEndpoint;
 import org.apache.tomcat.util.net.NioSelectorPool;
+import org.apache.tomcat.util.net.SocketWrapper;
 
 /**
  * Output buffer.
@@ -37,7 +39,7 @@ import org.apache.tomcat.util.net.NioSel
  * @author <a href="mailto:r...@apache.org";>Remy Maucherat</a>
  * @author Filip Hanik
  */
-public class InternalNioOutputBuffer extends AbstractOutputBuffer {
+public class InternalNioOutputBuffer extends AbstractOutputBuffer<NioChannel> {
 
     // ----------------------------------------------------------- Constructors
 
@@ -68,37 +70,19 @@ public class InternalNioOutputBuffer ext
     /**
      * Number of bytes last written
      */
-    protected MutableInteger lastWrite = new MutableInteger(1);
+    private MutableInteger lastWrite = new MutableInteger(1);
 
     /**
      * Underlying socket.
      */
-    protected NioChannel socket;
+    private NioChannel socket;
     
     /**
      * Selector pool, for blocking reads and blocking writes
      */
-    protected NioSelectorPool pool;
+    private NioSelectorPool pool;
 
 
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * Set the underlying socket.
-     */
-    public void setSocket(NioChannel socket) {
-        this.socket = socket;
-    }
-
-    public void setSelectorPool(NioSelectorPool pool) { 
-        this.pool = pool;
-    }
-
-    public NioSelectorPool getSelectorPool() {
-        return pool;
-    }    
-
     // --------------------------------------------------------- Public Methods
 
 
@@ -178,18 +162,18 @@ public class InternalNioOutputBuffer ext
         long writeTimeout = att.getTimeout();
         Selector selector = null;
         try {
-            selector = getSelectorPool().get();
+            selector = pool.get();
         } catch ( IOException x ) {
             //ignore
         }
         try {
-            written = getSelectorPool().write(bytebuffer, socket, selector, 
writeTimeout, block,lastWrite);
+            written = pool.write(bytebuffer, socket, selector, writeTimeout, 
block,lastWrite);
             //make sure we are flushed 
             do {
                 if (socket.flush(true,selector,writeTimeout,lastWrite)) break;
             }while ( true );
         }finally { 
-            if ( selector != null ) getSelectorPool().put(selector);
+            if ( selector != null ) pool.put(selector);
         }
         if ( block ) bytebuffer.clear(); //only clear
         this.total = 0;
@@ -199,6 +183,14 @@ public class InternalNioOutputBuffer ext
 
     // ------------------------------------------------------ Protected Methods
 
+    @Override
+    public void init(SocketWrapper<NioChannel> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException {
+
+        socket = socketWrapper.getSocket();
+        pool = ((NioEndpoint)endpoint).getSelectorPool();
+    }
+
 
     /**
      * Commit the response.
@@ -220,7 +212,7 @@ public class InternalNioOutputBuffer ext
 
     }
 
-    int total = 0;
+    private int total = 0;
     private synchronized void addToBB(byte[] buf, int offset, int length) 
throws IOException {
         while (length > 0) {
             int thisTime = length;
@@ -245,8 +237,7 @@ public class InternalNioOutputBuffer ext
     /**
      * Callback to write data from the buffer.
      */
-    protected void flushBuffer()
-        throws IOException {
+    private void flushBuffer() throws IOException {
 
         //prevent timeout for async,
         SelectionKey key = 
socket.getIOChannel().keyFor(socket.getPoller().getSelector());
@@ -294,6 +285,4 @@ public class InternalNioOutputBuffer ext
             return byteCount;
         }
     }
-
-
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalOutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalOutputBuffer.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalOutputBuffer.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalOutputBuffer.java 
Tue Aug 16 16:50:17 2011
@@ -19,17 +19,20 @@ package org.apache.coyote.http11;
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.net.Socket;
 
 import org.apache.coyote.OutputBuffer;
 import org.apache.coyote.Response;
 import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.net.AbstractEndpoint;
+import org.apache.tomcat.util.net.SocketWrapper;
 
 /**
  * Output buffer.
  * 
  * @author <a href="mailto:r...@apache.org";>Remy Maucherat</a>
  */
-public class InternalOutputBuffer extends AbstractOutputBuffer
+public class InternalOutputBuffer extends AbstractOutputBuffer<Socket>
     implements ByteChunk.ByteOutputChannel {
 
     // ----------------------------------------------------------- Constructors
@@ -58,7 +61,7 @@ public class InternalOutputBuffer extend
     }
 
     /**
-     * Underlying output stream.
+     * Underlying output stream. Note: protected to assist with unit testing
      */
     protected OutputStream outputStream;
 
@@ -66,28 +69,16 @@ public class InternalOutputBuffer extend
     /**
      * Socket buffer.
      */
-    protected ByteChunk socketBuffer;
+    private ByteChunk socketBuffer;
 
 
     /**
      * Socket buffer (extra buffering to reduce number of packets sent).
      */
-    protected boolean useSocketBuffer = false;    
+    private boolean useSocketBuffer = false;    
     
 
     /**
-     * Set the underlying socket output stream.
-     */
-    public void setOutputStream(OutputStream outputStream) {
-
-        // FIXME: Check for null ?
-
-        this.outputStream = outputStream;
-
-    }
-
-
-    /**
      * Set the socket buffer size.
      */
     public void setSocketBuffer(int socketBufferSize) {
@@ -104,6 +95,13 @@ public class InternalOutputBuffer extend
 
     // --------------------------------------------------------- Public Methods
 
+    @Override
+    public void init(SocketWrapper<Socket> socketWrapper,
+            AbstractEndpoint endpoint) throws IOException {
+
+        outputStream = socketWrapper.getSocket().getOutputStream();
+    }
+
 
     /**
      * Flush the response.
@@ -255,6 +253,4 @@ public class InternalOutputBuffer extend
             return byteCount;
         }
     }
-
-
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/SocketWrapper.java Tue 
Aug 16 16:50:17 2011
@@ -45,7 +45,6 @@ public class SocketWrapper<E> {
     public long getTimeout() {return this.timeout;}
     public boolean getError() { return error; }
     public void setError(boolean error) { this.error = error; }
-    public int getKeepAliveLeft() { return this.keepAliveLeft; }
     public void setKeepAliveLeft(int keepAliveLeft) { this.keepAliveLeft = 
keepAliveLeft;}
     public int decrementKeepAlive() { return (--keepAliveLeft);}
     public boolean isKeptAlive() {return keptAlive;}

Modified: 
tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestGzipOutputFilter.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestGzipOutputFilter.java?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestGzipOutputFilter.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestGzipOutputFilter.java 
Tue Aug 16 16:50:17 2011
@@ -54,7 +54,7 @@ public class TestGzipOutputFilter {
         Response res = new Response();
         InternalOutputBuffer iob = new InternalOutputBuffer(res, 8 * 1024);
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        iob.setOutputStream(bos);
+        iob.outputStream = bos;
         res.setOutputBuffer(iob);
 
         // set up GzipOutputFilter to attach to the InternalOutputBuffer

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1158367&r1=1158366&r2=1158367&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Aug 16 16:50:17 2011
@@ -97,6 +97,10 @@
         <bug>51641</bug>: Use correct key when removing processor instances 
from
         the connections map during clean-up. Patch provided by zhh. (mark)
       </fix>
+      <fix>
+        More changes to align the code between the different HTTP connectors.
+        (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to