From 34225155c08e1b6179da51579b5b43dbd027cc0f Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 27 Sep 2010 22:16:26 +0000 Subject: [PATCH] Partial fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=48644 Some Throwables must always be re-thrown git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1001933 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java | 2 ++ java/org/apache/jasper/compiler/JspReader.java | 2 ++ java/org/apache/jasper/compiler/JspRuntimeContext.java | 2 ++ java/org/apache/jasper/compiler/Localizer.java | 3 +++ java/org/apache/jasper/compiler/ParserController.java | 5 ++++- java/org/apache/jasper/compiler/TagLibraryInfoImpl.java | 2 ++ java/org/apache/jasper/compiler/TldLocationsCache.java | 6 +++--- java/org/apache/jasper/runtime/JspFactoryImpl.java | 3 ++- java/org/apache/jasper/servlet/JspCServletContext.java | 3 +++ java/org/apache/jasper/servlet/JspServlet.java | 3 +++ java/org/apache/jasper/servlet/JspServletWrapper.java | 2 ++ 11 files changed, 28 insertions(+), 5 deletions(-) diff --git a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java index f40f5d6fa..47e1b8648 100644 --- a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java +++ b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java @@ -31,6 +31,7 @@ import javax.servlet.jsp.tagext.TagLibraryInfo; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; +import org.apache.jasper.util.ExceptionUtils; import org.apache.jasper.xmlparser.ParserUtils; import org.apache.jasper.xmlparser.TreeNode; @@ -164,6 +165,7 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { try { in.close(); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); } } } diff --git a/java/org/apache/jasper/compiler/JspReader.java b/java/org/apache/jasper/compiler/JspReader.java index 31cef376e..09ae7405c 100644 --- a/java/org/apache/jasper/compiler/JspReader.java +++ b/java/org/apache/jasper/compiler/JspReader.java @@ -27,6 +27,7 @@ import java.util.jar.JarFile; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; +import org.apache.jasper.util.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -570,6 +571,7 @@ class JspReader { longName, encoding); } } catch (Throwable ex) { + ExceptionUtils.handleThrowable(ex); log.error("Exception parsing file ", ex); // Pop state being constructed: popFile(); diff --git a/java/org/apache/jasper/compiler/JspRuntimeContext.java b/java/org/apache/jasper/compiler/JspRuntimeContext.java index 117937c51..429263d27 100644 --- a/java/org/apache/jasper/compiler/JspRuntimeContext.java +++ b/java/org/apache/jasper/compiler/JspRuntimeContext.java @@ -40,6 +40,7 @@ import org.apache.jasper.Options; import org.apache.jasper.runtime.JspFactoryImpl; import org.apache.jasper.security.SecurityClassLoad; import org.apache.jasper.servlet.JspServletWrapper; +import org.apache.jasper.util.ExceptionUtils; import org.apache.jasper.util.JspQueue; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -338,6 +339,7 @@ public final class JspRuntimeContext { } catch (FileNotFoundException ex) { ctxt.incrementRemoved(); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); jsw.getServletContext().log("Background compile failed", t); } diff --git a/java/org/apache/jasper/compiler/Localizer.java b/java/org/apache/jasper/compiler/Localizer.java index 2db3d2aa8..f1075ddda 100644 --- a/java/org/apache/jasper/compiler/Localizer.java +++ b/java/org/apache/jasper/compiler/Localizer.java @@ -21,6 +21,8 @@ import java.text.MessageFormat; import java.util.MissingResourceException; import java.util.ResourceBundle; +import org.apache.jasper.util.ExceptionUtils; + /** * Class responsible for converting error codes to corresponding localized * error messages. @@ -36,6 +38,7 @@ public class Localizer { bundle = ResourceBundle.getBundle( "org.apache.jasper.resources.LocalStrings"); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); t.printStackTrace(); } } diff --git a/java/org/apache/jasper/compiler/ParserController.java b/java/org/apache/jasper/compiler/ParserController.java index a1d8f5504..97c776391 100644 --- a/java/org/apache/jasper/compiler/ParserController.java +++ b/java/org/apache/jasper/compiler/ParserController.java @@ -25,6 +25,7 @@ import java.util.jar.JarFile; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; +import org.apache.jasper.util.ExceptionUtils; import org.apache.jasper.xmlparser.XMLEncodingDetector; import org.xml.sax.Attributes; @@ -252,7 +253,9 @@ class ParserController implements TagConstants { if (jarFile != null) { try { jarFile.close(); - } catch (Throwable t) {} + } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); + } } baseDirStack.pop(); diff --git a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java index 126caca0d..20a8900cf 100644 --- a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java +++ b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java @@ -45,6 +45,7 @@ import javax.servlet.jsp.tagext.VariableInfo; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; +import org.apache.jasper.util.ExceptionUtils; import org.apache.jasper.xmlparser.ParserUtils; import org.apache.jasper.xmlparser.TreeNode; import org.apache.juli.logging.Log; @@ -185,6 +186,7 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants { try { in.close(); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); } } } diff --git a/java/org/apache/jasper/compiler/TldLocationsCache.java b/java/org/apache/jasper/compiler/TldLocationsCache.java index 0af0c8ad5..60cc79362 100644 --- a/java/org/apache/jasper/compiler/TldLocationsCache.java +++ b/java/org/apache/jasper/compiler/TldLocationsCache.java @@ -315,7 +315,7 @@ public class TldLocationsCache { try { stream.close(); } catch (Throwable t) { - // do nothing + ExceptionUtils.handleThrowable(t); } } } @@ -351,7 +351,7 @@ public class TldLocationsCache { try { stream.close(); } catch (Throwable t) { - // do nothing + ExceptionUtils.handleThrowable(t); } } } @@ -440,7 +440,7 @@ public class TldLocationsCache { try { stream.close(); } catch (Throwable t) { - // do nothing + ExceptionUtils.handleThrowable(t); } } } diff --git a/java/org/apache/jasper/runtime/JspFactoryImpl.java b/java/org/apache/jasper/runtime/JspFactoryImpl.java index b8267a119..f63a86005 100644 --- a/java/org/apache/jasper/runtime/JspFactoryImpl.java +++ b/java/org/apache/jasper/runtime/JspFactoryImpl.java @@ -29,6 +29,7 @@ import javax.servlet.jsp.JspFactory; import javax.servlet.jsp.PageContext; import org.apache.jasper.Constants; +import org.apache.jasper.util.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -112,7 +113,7 @@ public class JspFactoryImpl extends JspFactory { needsSession, bufferSize, autoflush); return pc; } catch (Throwable ex) { - /* FIXME: need to do something reasonable here!! */ + ExceptionUtils.handleThrowable(ex); log.fatal("Exception initializing page context", ex); return null; } diff --git a/java/org/apache/jasper/servlet/JspCServletContext.java b/java/org/apache/jasper/servlet/JspCServletContext.java index ea6e1a682..7a85f5c69 100644 --- a/java/org/apache/jasper/servlet/JspCServletContext.java +++ b/java/org/apache/jasper/servlet/JspCServletContext.java @@ -226,6 +226,7 @@ public class JspCServletContext implements ServletContext { return (getResource(path).getFile().replace('/', File.separatorChar)); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); return (null); } @@ -263,6 +264,7 @@ public class JspCServletContext implements ServletContext { try { is = url.openStream(); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); url = null; } finally { if (is != null) { @@ -289,6 +291,7 @@ public class JspCServletContext implements ServletContext { try { return (getResource(path).openStream()); } catch (Throwable t) { + ExceptionUtils.handleThrowable(t); return (null); } diff --git a/java/org/apache/jasper/servlet/JspServlet.java b/java/org/apache/jasper/servlet/JspServlet.java index 969b5e1b3..166831d7a 100644 --- a/java/org/apache/jasper/servlet/JspServlet.java +++ b/java/org/apache/jasper/servlet/JspServlet.java @@ -34,6 +34,7 @@ import org.apache.jasper.Options; import org.apache.jasper.compiler.JspRuntimeContext; import org.apache.jasper.compiler.Localizer; import org.apache.jasper.security.SecurityUtil; +import org.apache.jasper.util.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.PeriodicEventListener; @@ -93,6 +94,7 @@ public class JspServlet extends HttpServlet implements PeriodicEventListener { Object[] args = { config, context }; options = (Options) ctor.newInstance(args); } catch (Throwable e) { + ExceptionUtils.handleThrowable(e); // Need to localize this. log.warn("Failed to load engineOptionsClass", e); // Use the default Options implementation @@ -269,6 +271,7 @@ public class JspServlet extends HttpServlet implements PeriodicEventListener { } catch (IOException e) { throw e; } catch (Throwable e) { + ExceptionUtils.handleThrowable(e); throw new ServletException(e); } diff --git a/java/org/apache/jasper/servlet/JspServletWrapper.java b/java/org/apache/jasper/servlet/JspServletWrapper.java index 322528c2d..2b0d93488 100644 --- a/java/org/apache/jasper/servlet/JspServletWrapper.java +++ b/java/org/apache/jasper/servlet/JspServletWrapper.java @@ -42,6 +42,7 @@ import org.apache.jasper.compiler.Localizer; import org.apache.jasper.runtime.InstanceManagerFactory; import org.apache.jasper.runtime.JspSourceDependent; import org.apache.jasper.util.Entry; +import org.apache.jasper.util.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.InstanceManager; @@ -261,6 +262,7 @@ public class JspServletWrapper { return ((JspSourceDependent) target).getDependants(); } } catch (Throwable ex) { + ExceptionUtils.handleThrowable(ex); } return null; } -- 2.11.0