You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2001/11/02 17:36:49 UTC

cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant/util FileUtilsTest.java

bodewig     01/11/02 08:36:49

  Modified:    src/main/org/apache/tools/ant/taskdefs FixCRLF.java
                        Javadoc.java
               src/main/org/apache/tools/ant/taskdefs/compilers
                        DefaultCompilerAdapter.java
               src/main/org/apache/tools/ant/taskdefs/optional Cab.java
                        ReplaceRegExp.java
               src/main/org/apache/tools/ant/util FileUtils.java
               src/testcases/org/apache/tools/ant/util FileUtilsTest.java
  Log:
  push createTempFile to FileUtils
  
  Revision  Changes    Path
  1.20      +7 -18     jakarta-ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java
  
  Index: FixCRLF.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FixCRLF.java	2001/10/28 21:26:29	1.19
  +++ FixCRLF.java	2001/11/02 16:36:49	1.20
  @@ -58,6 +58,7 @@
   import org.apache.tools.ant.DirectoryScanner;
   import org.apache.tools.ant.Project;
   import org.apache.tools.ant.types.EnumeratedAttribute;
  +import org.apache.tools.ant.util.FileUtils;
   
   import java.io.File;
   import java.io.BufferedReader;
  @@ -65,7 +66,6 @@
   import java.io.IOException;
   import java.io.BufferedWriter;
   import java.io.FileWriter;
  -import java.util.Random;
   import java.util.Enumeration;
   import java.util.NoSuchElementException;
   
  @@ -108,7 +108,7 @@
    *
    * @author Sam Ruby <a href="mailto:rubys@us.ibm.com">rubys@us.ibm.com</a>
    * @author <a href="mailto:pbwest@powerup.com.au">Peter B. West</a>
  - * @version $Revision: 1.19 $ $Name:  $
  + * @version $Revision: 1.20 $ $Name:  $
    */
   
   public class FixCRLF extends MatchingTask {
  @@ -148,6 +148,8 @@
       private File srcDir;
       private File destDir = null;
   
  +    private FileUtils fileUtils = FileUtils.newFileUtils();
  +
       /**
        * Defaults the properties based on the system type.
        * <ul><li>Unix: eol="LF" tab="asis" eof="remove"
  @@ -356,19 +358,6 @@
       }
   
       /**
  -     * Creates a temporary file.
  -     */
  -    private File createTempFile() {
  -        String name = "fixcrlf" 
  -            + (new Random(System.currentTimeMillis())).nextLong();
  -        if (destDir == null) {
  -            return new File(srcDir, name);
  -        } else {
  -            return new File(destDir, name);
  -        }
  -    }
  -
  -    /**
        * Checks for the inequality of two files
        */
       private boolean filesEqual(File file1, File file2) {
  @@ -413,6 +402,7 @@
   
       private void processFile(String file) throws BuildException {
           File srcFile = new File(srcDir, file);
  +        File destD = destDir == null ? srcDir : destDir;
           File tmpFile = null;
           BufferedWriter outWriter;
           OneLiner.BufferLine line;
  @@ -423,7 +413,7 @@
           try {
               // Set up the output Writer
               try {
  -                tmpFile = createTempFile();
  +                tmpFile = fileUtils.createTempFile("fixcrlf", "", destD);
                   FileWriter writer = new FileWriter(tmpFile);
                   outWriter = new BufferedWriter(writer);
               } catch (IOException e) {
  @@ -554,8 +544,7 @@
                   throw new BuildException(e);
               } // end of try-catch
               
  -            File destFile = new File(destDir == null ? srcDir : destDir,
  -                                     file);
  +            File destFile = new File(destD, file);
   
               try {                                            
                   lines.close();
  
  
  
  1.65      +5 -10     jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  
  Index: Javadoc.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- Javadoc.java	2001/11/02 07:56:52	1.64
  +++ Javadoc.java	2001/11/02 16:36:49	1.65
  @@ -61,7 +61,6 @@
   import java.util.Vector;
   import java.util.Enumeration;
   import java.util.StringTokenizer;
  -import java.util.Random;
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.DirectoryScanner;
   import org.apache.tools.ant.Project;
  @@ -73,6 +72,7 @@
   import org.apache.tools.ant.types.EnumeratedAttribute;
   import org.apache.tools.ant.types.Commandline;
   import org.apache.tools.ant.types.FileSet;
  +import org.apache.tools.ant.util.FileUtils;
   
   /**
    * This task makes it easy to generate Javadoc documentation for a collection
  @@ -279,6 +279,8 @@
       private boolean useExternalFile = false;
       private File tmpList = null;
   
  +    private FileUtils fileUtils = FileUtils.newFileUtils();
  +
       /**
        * Work around command line length limit by using an external file
        * for the sourcefiles.
  @@ -924,7 +926,7 @@
                    */
                   if (useExternalFile) {
                       if (tmpList == null) {
  -                        tmpList = createTempFile();
  +                        tmpList = fileUtils.createTempFile("javadoc", "", null);
                           toExecute.createArgument().setValue("@" + tmpList.getAbsolutePath());
                       }
                       srcListWriter = new PrintWriter(new FileWriter(tmpList.getAbsolutePath(), 
  @@ -1055,7 +1057,7 @@
           PrintWriter packageListWriter = null;
           try {
               if (useExternalFile) {
  -                tmpList = createTempFile();
  +                tmpList = fileUtils.createTempFile("javadoc", "", null);
                   toExecute.createArgument().setValue("@" + tmpList.getAbsolutePath());
                   packageListWriter = new PrintWriter(new FileWriter(tmpList));
               }
  @@ -1146,13 +1148,6 @@
       protected String expand(String content) {
           return ProjectHelper.replaceProperties(project, content, 
                                                  project.getProperties());
  -    }
  -
  -    /**
  -     * Creates a temporary file.
  -     */
  -    private File createTempFile() {
  -        return new File("javadoc" + (new Random(System.currentTimeMillis())).nextLong());
       }
   
       private String getJavadocExecutableName()
  
  
  
  1.14      +4 -2      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
  
  Index: DefaultCompilerAdapter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DefaultCompilerAdapter.java	2001/11/02 15:18:47	1.13
  +++ DefaultCompilerAdapter.java	2001/11/02 16:36:49	1.14
  @@ -63,12 +63,12 @@
   import org.apache.tools.ant.types.Path;
   import org.apache.tools.ant.types.Commandline;
   import org.apache.tools.ant.types.FileSet;
  +import org.apache.tools.ant.util.FileUtils;
   
   import java.io.File;
   import java.io.PrintWriter;
   import java.io.FileWriter;
   import java.io.IOException;
  -import java.util.Random;
   
   /**
    * This is the default implementation for the CompilerAdapter interface.
  @@ -108,6 +108,8 @@
       protected static String lSep = System.getProperty("line.separator");
       protected Javac attributes;
   
  +    private FileUtils fileUtils = FileUtils.newFileUtils();
  +
       public void setJavac( Javac attributes ) {
           this.attributes = attributes;
           src = attributes.getSrcdir();
  @@ -362,7 +364,7 @@
               if (Commandline.toString(args).length() > 4096) {
                   PrintWriter out = null;
                   try {
  -                    tmpFile = new File("jikes"+(new Random(System.currentTimeMillis())).nextLong());
  +                    tmpFile = fileUtils.createTempFile("jikes", "", null);
                       out = new PrintWriter(new FileWriter(tmpFile));
                       for (int i = firstFileName; i < args.length; i++) {
                           out.println(args[i]);
  
  
  
  1.11      +5 -24     jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java
  
  Index: Cab.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/Cab.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Cab.java	2001/11/02 07:56:53	1.10
  +++ Cab.java	2001/11/02 16:36:49	1.11
  @@ -62,6 +62,7 @@
   import org.apache.tools.ant.taskdefs.condition.Os;
   import org.apache.tools.ant.types.FileSet;
   import org.apache.tools.ant.types.Commandline;
  +import org.apache.tools.ant.util.FileUtils;
   
   import java.io.File;
   import java.io.IOException;
  @@ -71,7 +72,6 @@
   import java.util.Enumeration;
   
   import java.util.Vector;
  -import java.util.Random;
   import java.text.DecimalFormat;
   
   /**
  @@ -93,6 +93,8 @@
   
       private static String myos;
   
  +    private FileUtils fileUtils = FileUtils.newFileUtils();
  +
       /**
        * This is the name/location of where to 
        * create the .cab file.
  @@ -213,27 +215,6 @@
           return command;
       }
   
  -    private static int counter = new Random().nextInt() % 100000;
  -    protected File createTempFile(String prefix, String suffix)
  -    {
  -        if (suffix == null)
  -        {
  -            suffix = ".tmp";
  -        }
  -
  -        String name = prefix +
  -            new DecimalFormat("#####").format(new Integer(counter++)) +
  -            suffix;
  -
  -        String tmpdir = System.getProperty("java.io.tmpdir");
  -
  -        // java.io.tmpdir is not present in 1.1
  -        if (tmpdir == null)
  -            return new File(name);
  -        else
  -            return new File(tmpdir, name);
  -    }
  -
       /**
        * Creates a list file.  This temporary file contains a list of all files
        * to be included in the cab, one file per line.
  @@ -241,7 +222,7 @@
       protected File createListFile(Vector files)
           throws IOException
       {
  -        File listFile = createTempFile("ant", null);
  +        File listFile = fileUtils.createTempFile("ant", "", null);
           
           PrintWriter writer = new PrintWriter(new FileOutputStream(listFile));
   
  @@ -342,7 +323,7 @@
                   exec.setDir(baseDir);
                   
                   if (!doVerbose) {
  -                    outFile = createTempFile("ant", null);
  +                    outFile = fileUtils.createTempFile("ant", "", null);
                       exec.setOutput(outFile);
                   }
                       
  
  
  
  1.3       +4 -8      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java
  
  Index: ReplaceRegExp.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ReplaceRegExp.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ReplaceRegExp.java	2001/11/02 14:04:56	1.2
  +++ ReplaceRegExp.java	2001/11/02 16:36:49	1.3
  @@ -61,6 +61,7 @@
   import org.apache.tools.ant.types.RegularExpression;
   import org.apache.tools.ant.types.Substitution;
   import org.apache.tools.ant.types.FileSet;
  +import org.apache.tools.ant.util.FileUtils;
   import java.io.BufferedReader;
   import java.io.BufferedWriter;
   import java.io.File;
  @@ -162,6 +163,8 @@
       private RegularExpression regex;
       private Substitution subs;
   
  +    private FileUtils fileUtils = FileUtils.newFileUtils();
  +
       /***
        * Default Constructor
        */
  @@ -260,7 +263,7 @@
           throws IOException
       {
           File parentDir = new File(new File(f.getAbsolutePath()).getParent());
  -        File temp = createTempFile(parentDir);
  +        File temp = fileUtils.createTempFile("replace", ".txt", parentDir);
   
           FileReader r = null;
           FileWriter w = null;
  @@ -418,13 +421,6 @@
                   }
               }
           }
  -    }
  -
  -    /**
  -     * Creates a temporary file.
  -     */
  -    private File createTempFile(File dir) {
  -        return new File(dir, "replace" + (new Random(System.currentTimeMillis())).nextLong()+".txt");
       }
   
   }
  
  
  
  1.8       +38 -1     jakarta-ant/src/main/org/apache/tools/ant/util/FileUtils.java
  
  Index: FileUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/util/FileUtils.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FileUtils.java	2001/10/28 21:27:20	1.7
  +++ FileUtils.java	2001/11/02 16:36:49	1.8
  @@ -63,8 +63,10 @@
   import java.io.FileInputStream;
   import java.io.FileOutputStream;
   import java.lang.reflect.Method;
  -import java.util.StringTokenizer;
  +import java.text.DecimalFormat;
  +import java.util.Random;
   import java.util.Stack;
  +import java.util.StringTokenizer;
   
   import org.apache.tools.ant.BuildException; 
   import org.apache.tools.ant.Project; 
  @@ -79,9 +81,12 @@
    * @author duncan@x180.com
    * @author <a href="mailto:conor@apache.org">Conor MacNeill</a>
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a> 
  + *
  + * @version $Revision: 1.8 $
    */
    
   public class FileUtils {
  +    private static Random rand = new Random(System.currentTimeMillis());
       private static Object lockReflection = new Object();
       private static java.lang.reflect.Method setLastModified = null;
   
  @@ -466,6 +471,38 @@
               path = path.replace('/', '\\');
           }
           return new File(path);
  +    }
  +
  +    /**
  +     * Create a temporary file in a given directory.
  +     *
  +     * <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>This method is different to File.createTempFile of JDK 1.2
  +     * as it doesn't create the file itself and doesn't use platform
  +     * specific temporary directory when the parentDir attribute is
  +     * null.</p>
  +     *
  +     * @param parentDir Directory to create the temporary file in -
  +     * current working directory will be assumed if this parameter is
  +     * null.
  +     *
  +     * @since 1.8
  +     */
  +    public File createTempFile(String prefix, String suffix, File parentDir) {
  +
  +        File result = null;
  +        DecimalFormat fmt = new DecimalFormat("#####");
  +        synchronized (rand) {
  +            do {
  +                result = new File(parentDir, 
  +                                  prefix + fmt.format(rand.nextInt()) 
  +                                  + suffix);
  +            } while (result.exists());
  +        }
  +        return result;
       }
   }
   
  
  
  
  1.5       +25 -0     jakarta-ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java
  
  Index: FileUtilsTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FileUtilsTest.java	2001/10/01 13:32:36	1.4
  +++ FileUtilsTest.java	2001/11/02 16:36:49	1.5
  @@ -274,6 +274,31 @@
       }
   
       /**
  +     * Test createTempFile
  +     */
  +    public void testCreateTempFile() {
  +        File parent = new File((new File("/tmp")).getAbsolutePath());
  +        File tmp1 = fu.createTempFile("pre", ".suf", parent);
  +        assertTrue("new file", !tmp1.exists());
  +
  +        String name = tmp1.getName();
  +        assertTrue("starts with pre", name.startsWith("pre"));
  +        assertTrue("ends with .suf", name.endsWith(".suf"));
  +        assertEquals("is inside parent dir", 
  +                     parent.getAbsolutePath(),
  +                     tmp1.getParent());
  +
  +        File tmp2 = fu.createTempFile("pre", ".suf", parent);
  +        assertTrue("files are different", 
  +                   !tmp1.getAbsolutePath().equals(tmp2.getAbsolutePath()));
  +
  +        // null parent dir
  +        File tmp3 = fu.createTempFile("pre", ".suf", null);
  +        assertEquals((new File(tmp3.getName())).getAbsolutePath(),
  +                     tmp3.getAbsolutePath());
  +    }
  +
  +    /**
        * adapt file separators to local conventions
        */
       private String localize(String path) {
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>