You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2012/12/11 11:14:06 UTC

svn commit: r1420066 - /openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java

Author: andygumbrecht
Date: Tue Dec 11 10:14:05 2012
New Revision: 1420066

URL: http://svn.apache.org/viewvc?rev=1420066&view=rev
Log:
Added flagForDeleteOnExit.

Modified:
    openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java

Modified: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java?rev=1420066&r1=1420065&r2=1420066&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java Tue Dec 11 10:14:05 2012
@@ -180,7 +180,11 @@ public class Files {
                     delete();
                 }
             };
-            Runtime.getRuntime().addShutdownHook(deleteShutdownHook);
+            try {
+                Runtime.getRuntime().addShutdownHook(deleteShutdownHook);
+            } catch (Throwable e) {
+                //Ignore
+            }
         } finally {
             Thread.currentThread().setContextClassLoader(loader);
         }
@@ -188,6 +192,26 @@ public class Files {
 
     public static void deleteOnExit(final File file) {
         delete.add(file.getAbsolutePath());
+        flagForDeleteOnExit(file);
+    }
+
+    public static void flagForDeleteOnExit(final File file) {
+        if (file.exists()) {
+            if (file.isDirectory()) {
+                final File[] files = file.listFiles();
+                if (null != files) {
+                    for (final File f : files) {
+                        flagForDeleteOnExit(f);
+                    }
+                }
+            }
+
+            try {
+                file.deleteOnExit();
+            } catch (SecurityException e) {
+                //Ignore
+            }
+        }
     }
 
     private static void delete() {
@@ -206,13 +230,12 @@ public class Files {
                     }
                 }
             }
-
-            if (!file.delete()) {
-                try {
+            try {
+                if (!file.delete()) {
                     file.deleteOnExit();
-                } catch (Throwable e) {
-                    //Ignore
                 }
+            } catch (Throwable e) {
+                //Ignore
             }
         }
     }