Author: jkf
Date: Mon Sep 10 12:15:27 2007
New Revision: 574339
URL: http://svn.apache.org/viewvc?rev=574339&view=rev
Log:
pr33969: tempfile task / FileUtils.createTempFile now actually creates the file.
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/docs/manual/CoreTasks/tempfile.html
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/TempFile.java
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java
Modified: ant/core/trunk/WHATSNEW
URL:
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=574339&r1=574338&r2=574339&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Mon Sep 10 12:15:27 2007
@@ -28,6 +28,11 @@
* Remove fall-back mechanism for references that are not resolved
during normal runtime execution.
+* FileUtils.createTempFile now actually creates the file.
+ The TempFile task still does not create the file by default, can be
instructed
+ to do so however using a new parameter.
+ Bugzilla report 33969.
+
Fixed bugs:
-----------
Modified: ant/core/trunk/docs/manual/CoreTasks/tempfile.html
URL:
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTasks/tempfile.html?rev=574339&r1=574338&r2=574339&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/tempfile.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/tempfile.html Mon Sep 10 12:15:27 2007
@@ -144,7 +144,7 @@
<td bgcolor="#eeeeee" valign="top" align="left">
<font color="#000000" size="-1"
face="arial,helvetica,sanserif">File</font>
</td>
- <td bgcolor="#eeeeee" valign="top" align="left" rowspan="4">
+ <td bgcolor="#eeeeee" valign="top" align="left" rowspan="5">
<font color="#000000" size="-1"
face="arial,helvetica,sanserif">Optional</font>
</td>
</tr>
@@ -181,10 +181,21 @@
<font color="#000000" size="-1"
face="arial,helvetica,sanserif">Whether the temp file will be marked for
deletion on normal exit of the Java Virtual Machine (even though the file may
never be created); default <em>false</em>. <strong>Since Ant 1.7</strong></font>
</td>
<td bgcolor="#eeeeee" valign="top" align="left">
- <font color="#000000" size="-1"
face="arial,helvetica,sanserif">String</font>
+ <font color="#000000" size="-1"
face="arial,helvetica,sanserif">boolean</font>
+ </td>
+ </tr>
+ <!-- Attribute -->
+ <tr>
+ <td bgcolor="#eeeeee" valign="top" align="left">
+ <font color="#000000" size="-1"
face="arial,helvetica,sanserif">createfile</font>
+ </td>
+ <td bgcolor="#eeeeee" valign="top" align="left">
+ <font color="#000000" size="-1"
face="arial,helvetica,sanserif">Whether the temp file should be created by this
task.<strong>Since Ant 1.8</strong></font>
+ </td>
+ <td bgcolor="#eeeeee" valign="top" align="left">
+ <font color="#000000" size="-1"
face="arial,helvetica,sanserif">boolean</font>
</td>
</tr>
-
</table>
</blockquote></td></tr>
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/TempFile.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/TempFile.java?rev=574339&r1=574338&r2=574339&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/TempFile.java
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/TempFile.java Mon Sep
10 12:15:27 2007
@@ -65,6 +65,9 @@
/** deleteOnExit flag */
private boolean deleteOnExit;
+
+ /** createFile flag */
+ private boolean createFile;
/**
* Sets the property you wish to assign the temporary file to.
@@ -123,6 +126,22 @@
public boolean isDeleteOnExit() {
return deleteOnExit;
}
+
+ /**
+ * If set the file is actually created, if not just a name is created.
+ * @param createFile boolean flag.
+ */
+ public void setCreateFile(boolean createFile) {
+ this.createFile = deleteOnExit;
+ }
+
+ /**
+ * Learn whether createFile flag is set for this tempfile task.
+ * @return the createFile flag.
+ */
+ public boolean isCreateFile() {
+ return createFile;
+ }
/**
* Creates the temporary file.
@@ -136,8 +155,14 @@
if (destDir == null) {
destDir = getProject().resolveFile(".");
}
- File tfile = FILE_UTILS.createTempFile(
- prefix, suffix, destDir, deleteOnExit);
+ File tfile;
+ if (createFile) {
+ tfile = FILE_UTILS.createTempFile(prefix, suffix, destDir,
+ deleteOnExit);
+ } else {
+ tfile = FILE_UTILS.createTempFileName(prefix, suffix, destDir,
+ deleteOnExit);
+ }
getProject().setNewProperty(property, tfile.toString());
}
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java?rev=574339&r1=574338&r2=574339&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
Mon Sep 10 12:15:27 2007
@@ -1824,8 +1824,8 @@
FTPFile [] theFiles = null;
final int maxIterations = 1000;
for (int counter = 1; counter < maxIterations; counter++) {
- File localFile = FILE_UTILS.createTempFile("ant" +
Integer.toString(counter), ".tmp",
- null);
+ File localFile = FILE_UTILS.createTempFileName("ant" +
Integer.toString(counter), ".tmp",
+ null, false);
String fileName = localFile.getName();
boolean found = false;
try {
Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java?rev=574339&r1=574338&r2=574339&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java Mon Sep 10
12:15:27 2007
@@ -786,12 +786,8 @@
* <p>The file denoted by the returned abstract pathname did not
* exist before this method was invoked, any subsequent invocation
* of this method will yield a different file name.</p>
- * <p>
- * The filename is prefixNNNNNsuffix where NNNN is a random number.
- * </p>
- * <p>This method is different from File.createTempFile() of JDK 1.2
- * as it doesn't create the file itself. It uses the location pointed
- * to by java.io.tmpdir when the parentDir attribute is null.</p>
+ *
+ * <p>As of ant 1.8 the file is actually created.</p>
*
* @param prefix prefix before the random number.
* @param suffix file extension; include the '.'.
@@ -811,19 +807,15 @@
* <p>The file denoted by the returned abstract pathname did not
* exist before this method was invoked, any subsequent invocation
* of this method will yield a different file name.</p>
- * <p>
- * The filename is prefixNNNNNsuffix where NNNN is a random number.
- * </p>
- * <p>This method is different from File.createTempFile() of JDK 1.2
- * as it doesn't create the file itself. It uses the location pointed
- * to by java.io.tmpdir when the parentDir attribute is null.</p>
+ *
+ * <p>As of ant 1.8 the file is actually created.</p>
*
* @param prefix prefix before the random number.
* @param suffix file extension; include the '.'.
* @param parentDir Directory to create the temporary file in;
+ * java.io.tmpdir used if not specified.
* @param deleteOnExit whether to set the tempfile for deletion on
* normal VM exit.
- * java.io.tmpdir used if not specified.
*
* @return a File reference to the new temporary file.
* @since Ant 1.7
@@ -834,11 +826,51 @@
String parent = (parentDir == null)
? System.getProperty("java.io.tmpdir")
: parentDir.getPath();
+
+ try {
+ result = File.createTempFile(prefix, suffix, new File(parent));
+ } catch (IOException e) {
+ throw new BuildException("Could not create tempfile in " + parent,
e);
+ }
+
+ if (deleteOnExit) {
+ result.deleteOnExit();
+ }
+ return result;
+ }
+
+ /**
+ * Create a File object for a temporary file in a given directory. Without
+ * actually creating the file.
+ *
+ * <p>The file denoted by the returned abstract pathname did not
+ * exist before this method was invoked, any subsequent invocation
+ * of this method will yield a different file name.</p>
+ * <p>
+ * The filename is prefixNNNNNsuffix where NNNN is a random number.
+ * </p>
+ *
+ * @param prefix prefix before the random number.
+ * @param suffix file extension; include the '.'.
+ * @param parentDir Directory to create the temporary file in;
+ * java.io.tmpdir used if not specified.
+ * @param deleteOnExit whether to set the tempfile for deletion on
+ * normal VM exit.
+ *
+ * @return a File reference to the new, nonexistent temporary file.
+ * @since Ant 1.8
+ */
+ public File createTempFileName(String prefix, String suffix,
+ File parentDir, boolean deleteOnExit) {
+ File result = null;
+ String parent = (parentDir == null) ? System
+ .getProperty("java.io.tmpdir") : parentDir.getPath();
DecimalFormat fmt = new DecimalFormat("#####");
synchronized (rand) {
do {
- result = new File(parent, prefix +
fmt.format(Math.abs(rand.nextInt())) + suffix);
+ result = new File(parent, prefix
+ + fmt.format(Math.abs(rand.nextInt())) + suffix);
} while (result.exists());
}
if (deleteOnExit) {
@@ -846,6 +878,8 @@
}
return result;
}
+
+
/**
* Compares the contents of two files.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]