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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to