You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by jg...@apache.org on 2009/11/23 22:57:20 UTC

svn commit: r883514 - /ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java

Author: jglick
Date: Mon Nov 23 21:57:19 2009
New Revision: 883514

URL: http://svn.apache.org/viewvc?rev=883514&view=rev
Log:
Trying to improve on r881624 robustness fix:
1. Use FileUtils.tryHardToDelete to delete possibly corrupt properties file.
2. Do not try to delete until after closing output stream.

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java?rev=883514&r1=883513&r2=883514&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java Mon Nov 23 21:57:19 2009
@@ -40,6 +40,7 @@
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.util.LayoutPreservingProperties;
 import org.apache.tools.ant.types.EnumeratedAttribute;
+import org.apache.tools.ant.util.FileUtils;
 
 /**
  *Modifies settings in a property file.
@@ -243,14 +244,16 @@
         try {
             OutputStream os = new FileOutputStream(propertyfile);
             try {
-                os.write(baos.toByteArray());
-            } catch (IOException x) {
-                propertyfile.delete(); // possibly corrupt
-                throw new BuildException(x, getLocation());
-            } finally {
-                os.close();
+                try {
+                    os.write(baos.toByteArray());
+                } finally {
+                    os.close();
+                }
+            } catch (IOException x) { // possibly corrupt
+                FileUtils.getFileUtils().tryHardToDelete(propertyfile);
+                throw x;
             }
-        } catch (IOException x) {
+        } catch (IOException x) { // opening, writing, or closing
             throw new BuildException(x, getLocation());
         }
     }