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]