Author: markt
Date: Sat Apr 24 19:26:17 2010
New Revision: 937680

URL: http://svn.apache.org/viewvc?rev=937680&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48644
Don't silently swallow Throwables that need to be re-thrown
Patch provided by Charlotte H (with a few tweaks)
Patch developed during the London GDC OS Jumpstart 2010

Added:
    tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java   (with props)
    tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java   (with props)
Modified:
    tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java
    tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java
    tomcat/trunk/java/org/apache/catalina/core/StandardPipeline.java
    tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
    tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
    tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
    tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java
    tomcat/trunk/java/org/apache/catalina/manager/host/HostManagerServlet.java
    tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java
    tomcat/trunk/java/org/apache/catalina/realm/JDBCRealm.java
    tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
    tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
    tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
    tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java
    tomcat/trunk/java/org/apache/catalina/startup/CatalinaProperties.java
    tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
    tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java
    tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java
    tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java
    tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java
    tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java
    tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java
    tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java
    tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java
    tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java

Modified: tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java Sat Apr 
24 19:26:17 2010
@@ -26,6 +26,7 @@ import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
 import org.apache.catalina.util.Base64;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 
@@ -272,7 +273,7 @@ public abstract class AbstractCatalinaTa
                 try {
                     reader.close();
                 } catch (Throwable u) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(u);
                 }
                 reader = null;
             }
@@ -280,7 +281,7 @@ public abstract class AbstractCatalinaTa
                 try {
                     istream.close();
                 } catch (Throwable u) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(u);
                 }
                 istream = null;
             }

Modified: tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java Sat 
Apr 24 19:26:17 2010
@@ -24,6 +24,7 @@ import java.lang.reflect.Method;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -162,7 +163,7 @@ public class AprLifecycleListener
                 // is below required.                
                 terminateAPR();
             } catch (Throwable t) {
-                // Ignore
+                ExceptionUtils.handleThrowable(t);
             }
             return;
         }

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardPipeline.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardPipeline.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardPipeline.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardPipeline.java Sat Apr 24 
19:26:17 2010
@@ -34,6 +34,7 @@ import org.apache.catalina.util.Lifecycl
 import org.apache.catalina.valves.ValveBase;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.modeler.Registry;
 
 
@@ -315,7 +316,7 @@ public class StandardPipeline extends Li
                 try {
                     ((Contained) oldBasic).setContainer(null);
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Sat Apr 24 
19:26:17 2010
@@ -60,6 +60,7 @@ import org.apache.catalina.util.Instance
 import org.apache.catalina.util.LifecycleBase;
 import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.PeriodicEventListener;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.log.SystemLogHandler;
 import org.apache.tomcat.util.modeler.Registry;
 
@@ -585,7 +586,7 @@ public class StandardWrapper
         try {
             loadServlet();
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
         return (singleThreadModel);
 

Modified: tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java Sat Apr 
24 19:26:17 2010
@@ -43,6 +43,7 @@ import org.apache.catalina.ha.tcp.Replic
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.io.ReplicationStream;
 import org.apache.catalina.util.LifecycleBase;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.catalina.ha.ClusterManager;
 
@@ -978,8 +979,8 @@ public class DeltaManager extends Cluste
                 continue;
             try {
                 session.expire(true, isExpireSessionsOnShutdown());
-            } catch (Throwable ignore) {
-                // Ignore
+            } catch (Throwable t) {
+                ExceptionUtils.handleThrowable(t);
             } 
         }
 

Modified: tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java Sat Apr 
24 19:26:17 2010
@@ -56,6 +56,7 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.util.RequestUtil;
 import org.apache.catalina.util.ServerInfo;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.modeler.Registry;
 
@@ -442,7 +443,7 @@ public class ManagerServlet
             value = getServletConfig().getInitParameter("debug");
             debug = Integer.parseInt(value);
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
 
         // Acquire global JNDI resources if available
@@ -1348,7 +1349,7 @@ public class ManagerServlet
                     // Try to stop the context first to be nicer
                     context.stop();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
                 try {
                     if (path.lastIndexOf('/') > 0) {
@@ -1560,7 +1561,7 @@ public class ManagerServlet
                 try {
                     ostream.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
                 ostream = null;
             }
@@ -1568,7 +1569,7 @@ public class ManagerServlet
                 try {
                     istream.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
                 istream = null;
             }

Modified: tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java Sat 
Apr 24 19:26:17 2010
@@ -33,6 +33,7 @@ import javax.management.ObjectName;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.util.RequestUtil;
+import org.apache.tomcat.util.ExceptionUtils;
 
 /**
  * This is a refactoring of the servlet to externalize
@@ -158,7 +159,7 @@ public class StatusTransformer {
             method.invoke(null, paramValues);
             ok = true;
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
         
         if (ok) {

Modified: 
tomcat/trunk/java/org/apache/catalina/manager/host/HostManagerServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/host/HostManagerServlet.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/host/HostManagerServlet.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/manager/host/HostManagerServlet.java 
Sat Apr 24 19:26:17 2010
@@ -42,6 +42,7 @@ import org.apache.catalina.Host;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.startup.HostConfig;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.modeler.Registry;
 import org.apache.catalina.core.ContainerBase;
@@ -316,7 +317,7 @@ public class HostManagerServlet
             value = getServletConfig().getInitParameter("debug");
             debug = Integer.parseInt(value);
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
 
     }

Modified: tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java Sat Apr 24 
19:26:17 2010
@@ -54,6 +54,7 @@ import org.apache.coyote.ajp.AjpProtocol
 import org.apache.coyote.http11.Http11AprProtocol;
 import org.apache.coyote.http11.Http11NioProtocol;
 import org.apache.coyote.http11.Http11Protocol;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.modeler.ManagedBean;
 import org.apache.tomcat.util.modeler.Registry;
@@ -1617,7 +1618,7 @@ public class MBeanUtils {
         try {
             ((Contained)valve).setContainer(null);
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
         if( mserver.isRegistered(oname) ) {
             mserver.unregisterMBean(oname);

Modified: tomcat/trunk/java/org/apache/catalina/realm/JDBCRealm.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JDBCRealm.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/realm/JDBCRealm.java (original)
+++ tomcat/trunk/java/org/apache/catalina/realm/JDBCRealm.java Sat Apr 24 
19:26:17 2010
@@ -30,6 +30,7 @@ import java.util.Properties;
 
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.util.LifecycleBase;
+import org.apache.tomcat.util.ExceptionUtils;
 
 
 /**
@@ -450,7 +451,7 @@ public class JDBCRealm
         try {
             preparedCredentials.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedCredentials = null;
 
@@ -458,7 +459,7 @@ public class JDBCRealm
         try {
             preparedRoles.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedRoles = null;
 

Modified: tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java Sat Apr 24 
19:26:17 2010
@@ -23,6 +23,7 @@ import org.apache.catalina.Loader;
 import org.apache.catalina.Session;
 import org.apache.catalina.util.CustomObjectInputStream;
 import org.apache.catalina.util.LifecycleBase;
+import org.apache.tomcat.util.ExceptionUtils;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -901,41 +902,41 @@ public class JDBCStore extends StoreBase
         try {
             preparedSizeSql.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedSizeSql = null;
 
         try {
             preparedKeysSql.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedKeysSql = null;
 
         try {
             preparedSaveSql.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedSaveSql = null;
 
         try {
             preparedClearSql.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
          
                try {
             preparedRemoveSql.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedRemoveSql = null;
 
         try {
             preparedLoadSql.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.preparedLoadSql = null;
 

Modified: tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java Sat Apr 24 
19:26:17 2010
@@ -50,6 +50,7 @@ import org.apache.catalina.Session;
 import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.util.LifecycleBase;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -402,7 +403,7 @@ public abstract class ManagerBase extend
                 method.invoke(null, paramValues);
                 apr = true;
             } catch (Throwable t) {
-                // Ignore
+                ExceptionUtils.handleThrowable(t);
             }
             if (apr) {
                 setEntropy(new String(result));

Modified: tomcat/trunk/java/org/apache/catalina/session/StandardManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardManager.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/StandardManager.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/session/StandardManager.java Sat Apr 
24 19:26:17 2010
@@ -47,6 +47,7 @@ import org.apache.catalina.util.Lifecycl
 import org.apache.catalina.security.SecurityUtil;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.ExceptionUtils;
 /**
  * Standard implementation of the <b>Manager</b> interface that provides
  * simple session persistence across restarts of this component (such as
@@ -547,7 +548,7 @@ public class StandardManager extends Man
             try {
                 session.expire(false);
             } catch (Throwable t) {
-                // Ignore
+                ExceptionUtils.handleThrowable(t);
             } finally {
                 session.recycle();
             }
@@ -621,7 +622,7 @@ public class StandardManager extends Man
                     session.expire();
                 }
             } catch (Throwable t) {
-                // Ignore
+                ExceptionUtils.handleThrowable(t);
             } finally {
                 // Measure against memory leaking if references to the session
                 // object are kept in a shared field somewhere

Modified: tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java Sat 
Apr 24 19:26:17 2010
@@ -31,6 +31,8 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;
 
+import org.apache.tomcat.util.ExceptionUtils;
+
 /**
  * A HttpServletResponseWrapper, used from
  * <code>SSIServletExternalResolver</code>
@@ -228,7 +230,7 @@ public class ResponseIncludeWrapper exte
                     lastModified = RFC1123_FORMAT.parse(value).getTime();
                 }
             } catch (Throwable ignore) {
-                // Ignore
+                ExceptionUtils.handleThrowable(ignore);
             }
         } else if (lname.equals(CONTENT_TYPE)) {
             contentType = value;
@@ -254,7 +256,7 @@ public class ResponseIncludeWrapper exte
                     lastModified = RFC1123_FORMAT.parse(value).getTime();
                 }
             } catch (Throwable ignore) {
-                // Ignore
+                ExceptionUtils.handleThrowable(ignore);
             }
         }
         else if (lname.equals(CONTENT_TYPE))

Modified: tomcat/trunk/java/org/apache/catalina/startup/CatalinaProperties.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/CatalinaProperties.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/CatalinaProperties.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/CatalinaProperties.java Sat 
Apr 24 19:26:17 2010
@@ -25,6 +25,8 @@ import java.net.URL;
 import java.util.Enumeration;
 import java.util.Properties;
 
+import org.apache.tomcat.util.ExceptionUtils;
+
 
 /**
  * Utility class to read the bootstrap Catalina configuration.
@@ -91,7 +93,7 @@ public class CatalinaProperties {
                 is = (new URL(configUrl)).openStream();
             }
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
 
         if (is == null) {
@@ -101,7 +103,7 @@ public class CatalinaProperties {
                 File properties = new File(conf, "catalina.properties");
                 is = new FileInputStream(properties);
             } catch (Throwable t) {
-                // Ignore
+                ExceptionUtils.handleThrowable(t);
             }
         }
 
@@ -110,7 +112,7 @@ public class CatalinaProperties {
                 is = CatalinaProperties.class.getResourceAsStream
                     ("/org/apache/catalina/startup/catalina.properties");
             } catch (Throwable t) {
-                // Ignore
+                ExceptionUtils.handleThrowable(t);
             }
         }
 

Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Sat Apr 24 
19:26:17 2010
@@ -48,6 +48,7 @@ import javax.servlet.ServletContainerIni
 import javax.servlet.ServletContext;
 import javax.servlet.annotation.HandlesTypes;
 
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.bcel.classfile.AnnotationElementValue;
 import org.apache.tomcat.util.bcel.classfile.AnnotationEntry;
 import org.apache.tomcat.util.bcel.classfile.ArrayElementValue;
@@ -1730,7 +1731,7 @@ public class ContextConfig
                             try {
                                 is.close();
                             } catch (Throwable t) {
-                                // ignore
+                                ExceptionUtils.handleThrowable(t);
                             }
                         }
                     }
@@ -1743,7 +1744,7 @@ public class ContextConfig
                 try {
                     jarFile.close();
                 } catch (Throwable t) {
-                    // ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }
@@ -1788,7 +1789,7 @@ public class ContextConfig
                             try {
                                 is.close();
                             } catch (Throwable t) {
-                                // ignore
+                                ExceptionUtils.handleThrowable(t);
                             }
                         }
                     }
@@ -1820,7 +1821,7 @@ public class ContextConfig
                     try {
                         fis.close();
                     } catch (Throwable t) {
-                        // ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                 }
             }
@@ -2087,14 +2088,14 @@ public class ContextConfig
                     try {
                         jarFile.close();
                     } catch (Throwable t) {
-                        // ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                 }
                 if (stream != null) {
                     try {
                         stream.close();
                     } catch (Throwable t) {
-                        // ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                 }
                 fragment.setURL(urlConn.getURL());
@@ -2126,7 +2127,7 @@ public class ContextConfig
                     try {
                         stream.close();
                     } catch (Throwable t) {
-                        // ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                 }
                 if (fragment == null) {

Modified: tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java Sat Apr 24 
19:26:17 2010
@@ -32,6 +32,7 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
 import org.apache.catalina.Host;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -153,7 +154,7 @@ public class ExpandWar {
                 try {
                     input.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
                 input = null;
             }
@@ -161,7 +162,7 @@ public class ExpandWar {
                 try {
                     jarFile.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
                 jarFile = null;
             }
@@ -228,7 +229,7 @@ public class ExpandWar {
                 try {
                     jarFile.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
                 jarFile = null;
             }

Modified: tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java Sat Apr 24 
19:26:17 2010
@@ -49,6 +49,7 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.util.IOTools;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.modeler.Registry;
@@ -872,7 +873,7 @@ public class HostConfig
                     try {
                         ostream.close();
                     } catch (Throwable t) {
-                        // Ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                     ostream = null;
                 }
@@ -880,7 +881,7 @@ public class HostConfig
                     try {
                         istream.close();
                     } catch (Throwable t) {
-                        // Ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                     istream = null;
                 }
@@ -890,7 +891,7 @@ public class HostConfig
                     try {
                         jar.close();
                     } catch (Throwable t) {
-                        // Ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                     jar = null;
                 }
@@ -942,7 +943,7 @@ public class HostConfig
                             try {
                                 istream.close();
                             } catch (Throwable t) {
-                                // Ignore
+                                ExceptionUtils.handleThrowable(t);
                             }
                             istream = null;
                         }
@@ -952,7 +953,7 @@ public class HostConfig
                             try {
                                 jar.close();
                             } catch (Throwable t) {
-                                // Ignore
+                                ExceptionUtils.handleThrowable(t);
                             }
                             jar = null;
                         }

Modified: tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java Sat Apr 24 
19:26:17 2010
@@ -45,6 +45,7 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.core.StandardHost;
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.JarScannerCallback;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.digester.Digester;
 import org.xml.sax.InputSource;
@@ -518,7 +519,7 @@ public final class TldConfig  implements
                 try {
                     jarFile.close();
                 } catch (Throwable t) {
-                    // ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }

Modified: tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java Sat Apr 
24 19:26:17 2010
@@ -31,6 +31,7 @@ import org.apache.catalina.Group;
 import org.apache.catalina.Role;
 import org.apache.catalina.User;
 import org.apache.catalina.UserDatabase;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -412,7 +413,7 @@ public class MemoryUserDatabase implemen
                     try {
                         fis.close();
                     } catch (Throwable t) {
-                        // Ignore
+                        ExceptionUtils.handleThrowable(t);
                     }
                     throw e;
                 }

Modified: tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java Sat Apr 
24 19:26:17 2010
@@ -35,6 +35,7 @@ import javax.naming.directory.DirContext
 
 import org.apache.catalina.Context;
 import org.apache.naming.resources.Resource;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 
 
@@ -168,7 +169,7 @@ public final class ExtensionValidator {
                 try {
                     inputStream.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }
@@ -207,7 +208,7 @@ public final class ExtensionValidator {
                 try {
                     inputStream.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }
@@ -398,7 +399,7 @@ public final class ExtensionValidator {
                 try {
                     jin.close();
                 } catch (Throwable t) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }

Modified: tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java Sat Apr 
24 19:26:17 2010
@@ -30,6 +30,7 @@ import org.apache.catalina.connector.Req
 import org.apache.catalina.connector.Response;
 import org.apache.catalina.util.RequestUtil;
 import org.apache.catalina.util.ServerInfo;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
@@ -139,7 +140,7 @@ public class ErrorReportValve extends Va
         try {
             report(request, response, throwable);
         } catch (Throwable tt) {
-            // Ignore
+            ExceptionUtils.handleThrowable(tt);
         }
 
     }
@@ -176,7 +177,7 @@ public class ErrorReportValve extends Va
         try {
             report = sm.getString("http." + statusCode, message);
         } catch (Throwable t) {
-            // Ignore
+            ExceptionUtils.handleThrowable(t);
         }
         if (report == null)
             return;

Modified: tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/valves/JDBCAccessLogValve.java Sat 
Apr 24 19:26:17 2010
@@ -34,6 +34,7 @@ import org.apache.catalina.LifecycleStat
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
 import org.apache.catalina.util.LifecycleBase;
+import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
@@ -575,7 +576,7 @@ public final class JDBCAccessLogValve ex
         try {
             ps.close();
         } catch (Throwable f) {
-            // Ignore
+            ExceptionUtils.handleThrowable(f);
         }
         this.ps = null;
 

Modified: tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java 
(original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java Sat Apr 
24 19:26:17 2010
@@ -34,6 +34,7 @@ import java.util.jar.JarFile;
 import javax.servlet.ServletContext;
 
 import org.apache.jasper.JasperException;
+import org.apache.jasper.util.ExceptionUtils;
 import org.apache.jasper.xmlparser.ParserUtils;
 import org.apache.jasper.xmlparser.TreeNode;
 import org.apache.tomcat.JarScanner;
@@ -388,7 +389,7 @@ public class TldLocationsCache {
                 try {
                     jarFile.close();
                 } catch (Throwable t) {
-                    // ignore
+                    ExceptionUtils.handleThrowable(t);
                 }
             }
         }

Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java?rev=937680&r1=937679&r2=937680&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java 
(original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java Sat Apr 
24 19:26:17 2010
@@ -44,6 +44,8 @@ import javax.servlet.SessionTrackingMode
 import javax.servlet.FilterRegistration.Dynamic;
 import javax.servlet.descriptor.JspConfigDescriptor;
 
+import org.apache.jasper.util.ExceptionUtils;
+
 
 /**
  * Simple <code>ServletContext</code> implementation without
@@ -267,7 +269,7 @@ public class JspCServletContext implemen
                 try {
                     is.close();
                 } catch (Throwable t2) {
-                    // Ignore
+                    ExceptionUtils.handleThrowable(t2);
                 }
             }
         }

Added: tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java?rev=937680&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java (added)
+++ tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java Sat Apr 24 
19:26:17 2010
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jasper.util;
+
+/**
+ * Utilities for handling Throwables and Exceptions.
+ */
+public class ExceptionUtils {
+    
+    /**
+     * Checks whether the supplied Throwable is one that needs to be 
+     * rethrown and swallows all others.
+     * @param t the Throwable to check
+     */
+    public static void handleThrowable(Throwable t) {
+        if (t instanceof ThreadDeath) {
+            throw (ThreadDeath) t;
+        }
+        if (t instanceof VirtualMachineError) {
+            throw (VirtualMachineError) t;
+        }
+        // All other instances of Throwable will be silently swallowed
+    }
+}

Propchange: tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java?rev=937680&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java (added)
+++ tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java Sat Apr 24 
19:26:17 2010
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.util;
+
+/**
+ * Utilities for handling Throwables and Exceptions.
+ */
+public class ExceptionUtils {
+    
+    /**
+     * Checks whether the supplied Throwable is one that needs to be 
+     * rethrown and swallows all others.
+     * @param t the Throwable to check
+     */
+    public static void handleThrowable(Throwable t) {
+        if (t instanceof ThreadDeath) {
+            throw (ThreadDeath) t;
+        }
+        if (t instanceof VirtualMachineError) {
+            throw (VirtualMachineError) t;
+        }
+        // All other instances of Throwable will be silently swallowed
+    }
+}

Propchange: tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native



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

Reply via email to