Author: markt
Date: Tue May 20 18:38:02 2014
New Revision: 1596359
URL: http://svn.apache.org/r1596359
Log:
Backport of r1575545
Better align 7.0.x with trunk to aid back-ports
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletInputStream.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletOutputStream.java
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1575545
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletInputStream.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletInputStream.java?rev=1596359&r1=1596358&r2=1596359&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletInputStream.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletInputStream.java
Tue May 20 18:38:02 2014
@@ -68,15 +68,7 @@ public abstract class AbstractServletInp
try {
ready = Boolean.valueOf(doIsReady());
} catch (IOException e) {
- Thread thread = Thread.currentThread();
- ClassLoader originalClassLoader = thread.getContextClassLoader();
- try {
- thread.setContextClassLoader(applicationLoader);
- listener.onError(e);
- } finally {
- thread.setContextClassLoader(originalClassLoader);
- }
- ready = Boolean.FALSE;
+ onError(e);
}
return ready.booleanValue();
}
@@ -184,7 +176,25 @@ public abstract class AbstractServletInp
}
+ protected final void onAllDataRead() throws IOException {
+ if (listener == null) {
+ return;
+ }
+ Thread thread = Thread.currentThread();
+ ClassLoader originalClassLoader = thread.getContextClassLoader();
+ try {
+ thread.setContextClassLoader(applicationLoader);
+ listener.onAllDataRead();
+ } finally {
+ thread.setContextClassLoader(originalClassLoader);
+ }
+ }
+
+
protected final void onDataAvailable() throws IOException {
+ if (listener == null) {
+ return;
+ }
ready = Boolean.TRUE;
Thread thread = Thread.currentThread();
ClassLoader originalClassLoader = thread.getContextClassLoader();
@@ -197,6 +207,22 @@ public abstract class AbstractServletInp
}
+ protected final void onError(Throwable t) {
+ if (listener == null) {
+ return;
+ }
+ Thread thread = Thread.currentThread();
+ ClassLoader originalClassLoader = thread.getContextClassLoader();
+ try {
+ thread.setContextClassLoader(applicationLoader);
+ listener.onError(t);
+ } finally {
+ thread.setContextClassLoader(originalClassLoader);
+ }
+ ready = Boolean.FALSE;
+ }
+
+
protected final boolean isCloseRequired() {
return closeRequired;
}
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletOutputStream.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletOutputStream.java?rev=1596359&r1=1596358&r2=1596359&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletOutputStream.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/upgrade/AbstractServletOutputStream.java
Tue May 20 18:38:02 2014
@@ -145,14 +145,7 @@ public abstract class AbstractServletOut
writeInternal(buffer, 0, buffer.length);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
- Thread thread = Thread.currentThread();
- ClassLoader originalClassLoader =
thread.getContextClassLoader();
- try {
- thread.setContextClassLoader(applicationLoader);
- listener.onError(t);
- } finally {
- thread.setContextClassLoader(originalClassLoader);
- }
+ onError(t);
if (t instanceof IOException) {
throw (IOException) t;
} else {
@@ -183,6 +176,21 @@ public abstract class AbstractServletOut
}
}
+ protected final void onError(Throwable t) {
+ if (listener == null) {
+ return;
+ }
+ Thread thread = Thread.currentThread();
+ ClassLoader originalClassLoader = thread.getContextClassLoader();
+ try {
+ thread.setContextClassLoader(applicationLoader);
+ listener.onError(t);
+ } finally {
+ thread.setContextClassLoader(originalClassLoader);
+ }
+ }
+
+
/**
* Abstract method to be overridden by concrete implementations. The base
* class will ensure that there are no concurrent calls to this method for
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]