Author: markt
Date: Tue Sep 29 22:05:19 2015
New Revision: 1705939

URL: http://svn.apache.org/viewvc?rev=1705939&view=rev
Log:
Pull-up common dispatch() method

Modified:
    tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java
    tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
    tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java

Modified: tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java?rev=1705939&r1=1705938&r2=1705939&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AbstractProcessor.java Tue Sep 29 
22:05:19 2015
@@ -17,11 +17,14 @@
 package org.apache.coyote;
 
 import java.io.IOException;
+import java.io.InterruptedIOException;
 import java.util.concurrent.Executor;
 
+import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpUpgradeHandler;
 
 import org.apache.juli.logging.Log;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.net.AbstractEndpoint;
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
 import org.apache.tomcat.util.net.SocketStatus;
@@ -219,6 +222,7 @@ public abstract class AbstractProcessor
     @Override
     public abstract SocketState process(SocketWrapperBase<?> socket) throws 
IOException;
 
+
     /**
      * Process an in-progress request that is not longer in standard HTTP mode.
      * Uses currently include Servlet 3.0 Async and HTTP upgrade connections.
@@ -226,7 +230,52 @@ public abstract class AbstractProcessor
      * HTTP requests.
      */
     @Override
-    public abstract SocketState dispatch(SocketStatus status);
+    public final SocketState dispatch(SocketStatus status) {
+
+        if (status == SocketStatus.OPEN_WRITE && response.getWriteListener() 
!= null) {
+            asyncStateMachine.asyncOperation();
+            try {
+                if (flushBufferedWrite()) {
+                    return SocketState.LONG;
+                }
+            } catch (IOException ioe) {
+                if (getLog().isDebugEnabled()) {
+                    getLog().debug("Unable to write async data.", ioe);
+                }
+                status = SocketStatus.ASYNC_WRITE_ERROR;
+                request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, ioe);
+            }
+        } else if (status == SocketStatus.OPEN_READ && 
request.getReadListener() != null) {
+            dispatchNonBlockingRead();
+        }
+
+        RequestInfo rp = request.getRequestProcessor();
+        try {
+            rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
+            if (!getAdapter().asyncDispatch(request, response, status)) {
+                setErrorState(ErrorState.CLOSE_NOW, null);
+            }
+        } catch (InterruptedIOException e) {
+            setErrorState(ErrorState.CLOSE_NOW, e);
+        } catch (Throwable t) {
+            ExceptionUtils.handleThrowable(t);
+            setErrorState(ErrorState.CLOSE_NOW, t);
+            getLog().error(sm.getString("http11processor.request.process"), t);
+        }
+
+        rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
+
+        if (getErrorState().isError()) {
+            request.updateCounters();
+            return SocketState.CLOSED;
+        } else if (isAsync()) {
+            return SocketState.LONG;
+        } else {
+            request.updateCounters();
+            return dispatchEndRequest();
+        }
+    }
+
 
     /**
      * Flush any pending writes. Used during non-blocking writes to flush any

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1705939&r1=1705938&r2=1705939&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Tue Sep 29 
22:05:19 2015
@@ -27,7 +27,6 @@ import java.security.cert.CertificateFac
 import java.security.cert.X509Certificate;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpUpgradeHandler;
 
@@ -616,54 +615,6 @@ public class AjpProcessor extends Abstra
         }
     }
 
-
-    @Override
-    public SocketState dispatch(SocketStatus status) {
-
-        if (status == SocketStatus.OPEN_WRITE && response.getWriteListener() 
!= null) {
-            asyncStateMachine.asyncOperation();
-            try {
-                if (flushBufferedWrite()) {
-                    return SocketState.LONG;
-                }
-            } catch (IOException ioe) {
-                if (getLog().isDebugEnabled()) {
-                    getLog().debug("Unable to write async data.", ioe);
-                }
-                status = SocketStatus.ASYNC_WRITE_ERROR;
-                request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, ioe);
-            }
-        } else if (status == SocketStatus.OPEN_READ && 
request.getReadListener() != null) {
-            dispatchNonBlockingRead();
-        }
-
-        RequestInfo rp = request.getRequestProcessor();
-        try {
-            rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
-            if (!getAdapter().asyncDispatch(request, response, status)) {
-                setErrorState(ErrorState.CLOSE_NOW, null);
-            }
-        } catch (InterruptedIOException e) {
-            setErrorState(ErrorState.CLOSE_NOW, e);
-        } catch (Throwable t) {
-            ExceptionUtils.handleThrowable(t);
-            setErrorState(ErrorState.CLOSE_NOW, t);
-            getLog().error(sm.getString("http11processor.request.process"), t);
-        }
-
-        rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
-
-        if (getErrorState().isError()) {
-            request.updateCounters();
-            return SocketState.CLOSED;
-        } else if (isAsync()) {
-            return SocketState.LONG;
-        } else {
-            request.updateCounters();
-            return dispatchEndRequest();
-        }
-    }
-
 
     @Override
     protected boolean flushBufferedWrite() throws IOException {

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1705939&r1=1705938&r2=1705939&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Tue Sep 29 
22:05:19 2015
@@ -26,7 +26,6 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.regex.Pattern;
 
-import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpUpgradeHandler;
 
@@ -1694,54 +1693,6 @@ public class Http11Processor extends Abs
     }
 
 
-    @Override
-    public SocketState dispatch(SocketStatus status) {
-
-        if (status == SocketStatus.OPEN_WRITE && response.getWriteListener() 
!= null) {
-            asyncStateMachine.asyncOperation();
-            try {
-                if (flushBufferedWrite()) {
-                    return SocketState.LONG;
-                }
-            } catch (IOException ioe) {
-                if (getLog().isDebugEnabled()) {
-                    getLog().debug("Unable to write async data.", ioe);
-                }
-                status = SocketStatus.ASYNC_WRITE_ERROR;
-                request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, ioe);
-            }
-        } else if (status == SocketStatus.OPEN_READ && 
request.getReadListener() != null) {
-            dispatchNonBlockingRead();
-        }
-
-        RequestInfo rp = request.getRequestProcessor();
-        try {
-            rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
-            if (!getAdapter().asyncDispatch(request, response, status)) {
-                setErrorState(ErrorState.CLOSE_NOW, null);
-            }
-        } catch (InterruptedIOException e) {
-            setErrorState(ErrorState.CLOSE_NOW, e);
-        } catch (Throwable t) {
-            ExceptionUtils.handleThrowable(t);
-            setErrorState(ErrorState.CLOSE_NOW, t);
-            getLog().error(sm.getString("http11processor.request.process"), t);
-        }
-
-        rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
-
-        if (getErrorState().isError()) {
-            request.updateCounters();
-            return SocketState.CLOSED;
-        } else if (isAsync()) {
-            return SocketState.LONG;
-        } else {
-            request.updateCounters();
-            return dispatchEndRequest();
-        }
-    }
-
-
     @Override
     protected boolean flushBufferedWrite() throws IOException {
         if (outputBuffer.hasDataToWrite()) {

Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1705939&r1=1705938&r2=1705939&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Tue Sep 29 
22:05:19 2015
@@ -17,14 +17,12 @@
 package org.apache.coyote.http2;
 
 import java.io.IOException;
-import java.io.InterruptedIOException;
 import java.nio.ByteBuffer;
 import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpUpgradeHandler;
 
 import org.apache.coyote.AbstractProcessor;
@@ -33,10 +31,8 @@ import org.apache.coyote.Adapter;
 import org.apache.coyote.AsyncContextCallback;
 import org.apache.coyote.ContainerThreadMarker;
 import org.apache.coyote.ErrorState;
-import org.apache.coyote.RequestInfo;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
 import org.apache.tomcat.util.net.DispatchType;
 import org.apache.tomcat.util.net.SSLSupport;
@@ -399,54 +395,6 @@ public class StreamProcessor extends Abs
         }
     }
 
-
-    @Override
-    public SocketState dispatch(SocketStatus status) {
-
-        if (status == SocketStatus.OPEN_WRITE && response.getWriteListener() 
!= null) {
-            asyncStateMachine.asyncOperation();
-            try {
-                if (flushBufferedWrite()) {
-                    return SocketState.LONG;
-                }
-            } catch (IOException ioe) {
-                if (getLog().isDebugEnabled()) {
-                    getLog().debug("Unable to write async data.", ioe);
-                }
-                status = SocketStatus.ASYNC_WRITE_ERROR;
-                request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, ioe);
-            }
-        } else if (status == SocketStatus.OPEN_READ && 
request.getReadListener() != null) {
-            dispatchNonBlockingRead();
-        }
-
-        RequestInfo rp = request.getRequestProcessor();
-        try {
-            rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
-            if (!getAdapter().asyncDispatch(request, response, status)) {
-                setErrorState(ErrorState.CLOSE_NOW, null);
-            }
-        } catch (InterruptedIOException e) {
-            setErrorState(ErrorState.CLOSE_NOW, e);
-        } catch (Throwable t) {
-            ExceptionUtils.handleThrowable(t);
-            setErrorState(ErrorState.CLOSE_NOW, t);
-            getLog().error(sm.getString("http11processor.request.process"), t);
-        }
-
-        rp.setStage(org.apache.coyote.Constants.STAGE_ENDED);
-
-        if (getErrorState().isError()) {
-            request.updateCounters();
-            return SocketState.CLOSED;
-        } else if (isAsync()) {
-            return SocketState.LONG;
-        } else {
-            request.updateCounters();
-            return dispatchEndRequest();
-        }
-    }
-
 
     @Override
     protected boolean flushBufferedWrite() throws IOException {



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

Reply via email to