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: [email protected]
For additional commands, e-mail: [email protected]