You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-cvs@xml.apache.org by mr...@apache.org on 2008/06/23 04:02:08 UTC

svn commit: r670432 - in /xml/commons/trunk/java/external/src/javax/xml: datatype/FactoryFinder.java validation/SchemaFactoryFinder.java xpath/XPathFactoryFinder.java

Author: mrglavas
Date: Sun Jun 22 19:02:08 2008
New Revision: 670432

URL: http://svn.apache.org/viewvc?rev=670432&view=rev
Log:
ThreadDeath should always be re-thrown so that the dying thread can terminate normally.
Also we shouldn't be catching and ignoring OutOfMemoryErrors, StackOverflowErrors or
any other serious VM error. Re-throw them.

Modified:
    xml/commons/trunk/java/external/src/javax/xml/datatype/FactoryFinder.java
    xml/commons/trunk/java/external/src/javax/xml/validation/SchemaFactoryFinder.java
    xml/commons/trunk/java/external/src/javax/xml/xpath/XPathFactoryFinder.java

Modified: xml/commons/trunk/java/external/src/javax/xml/datatype/FactoryFinder.java
URL: http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/javax/xml/datatype/FactoryFinder.java?rev=670432&r1=670431&r2=670432&view=diff
==============================================================================
--- xml/commons/trunk/java/external/src/javax/xml/datatype/FactoryFinder.java (original)
+++ xml/commons/trunk/java/external/src/javax/xml/datatype/FactoryFinder.java Sun Jun 22 19:02:08 2008
@@ -376,7 +376,16 @@
             if (it != null) {
             	return it.toString();
             } 
-        } catch (Throwable t) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable t) {
             // work defensively.
             if (debug) {
             	t.printStackTrace();

Modified: xml/commons/trunk/java/external/src/javax/xml/validation/SchemaFactoryFinder.java
URL: http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/javax/xml/validation/SchemaFactoryFinder.java?rev=670432&r1=670431&r2=670432&view=diff
==============================================================================
--- xml/commons/trunk/java/external/src/javax/xml/validation/SchemaFactoryFinder.java (original)
+++ xml/commons/trunk/java/external/src/javax/xml/validation/SchemaFactoryFinder.java Sun Jun 22 19:02:08 2008
@@ -108,7 +108,16 @@
                 debugPrintln("using thread context class loader ("+classLoader+") for search");
                 return;
             }
-        } catch( Throwable _ ) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable _) {
             ; // getContextClassLoader() undefined in JDK1.1 
         }
         
@@ -169,7 +178,16 @@
             else if (debug) {
                 debugPrintln("The property is undefined.");
             }
-        } catch( Throwable t ) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable t) {
             if( debug ) {
                 debugPrintln("failed to look up system property '"+propertyName+"'" );
                 t.printStackTrace();
@@ -283,7 +301,16 @@
                 return (SchemaFactory)o;
             
             if (debug) debugPrintln(className+" is not assignable to "+SERVICE_CLASS.getName());
-        } catch( Throwable t ) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable t) {
             debugPrintln("failed to instanciate "+className);
             if(debug)   t.printStackTrace();
         }

Modified: xml/commons/trunk/java/external/src/javax/xml/xpath/XPathFactoryFinder.java
URL: http://svn.apache.org/viewvc/xml/commons/trunk/java/external/src/javax/xml/xpath/XPathFactoryFinder.java?rev=670432&r1=670431&r2=670432&view=diff
==============================================================================
--- xml/commons/trunk/java/external/src/javax/xml/xpath/XPathFactoryFinder.java (original)
+++ xml/commons/trunk/java/external/src/javax/xml/xpath/XPathFactoryFinder.java Sun Jun 22 19:02:08 2008
@@ -110,7 +110,16 @@
                 debugPrintln("using thread context class loader ("+classLoader+") for search");
                 return;
             }
-        } catch( Throwable _ ) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable _) {
             ; // getContextClassLoader() undefined in JDK1.1 
         }
         
@@ -171,7 +180,16 @@
             else if (debug) {
                 debugPrintln("The property is undefined.");
             }
-        } catch( Throwable t ) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable t) {
             if( debug ) {
                 debugPrintln("failed to look up system property '"+propertyName+"'" );
                 t.printStackTrace();
@@ -263,7 +281,16 @@
                 return (XPathFactory)o;
             
             if (debug) debugPrintln(className+" is not assignable to "+SERVICE_CLASS.getName());
-        } catch( Throwable t ) {
+        }
+        // The VM ran out of memory or there was some other serious problem. Re-throw.
+        catch (VirtualMachineError vme) {
+            throw vme;
+        }
+        // ThreadDeath should always be re-thrown
+        catch (ThreadDeath td) {
+            throw td;
+        }
+        catch (Throwable t) {
             if (debug) {
                 debugPrintln("failed to instanciate "+className);
                 t.printStackTrace();