You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by jk...@apache.org on 2005/01/04 21:20:53 UTC

cvs commit: ant/src/main/org/apache/tools/ant/taskdefs Copy.java DependSet.java

jkf         2005/01/04 12:20:52

  Modified:    src/main/org/apache/tools/ant/util FileUtils.java
               src/main/org/apache/tools/ant/types/selectors
                        MappingSelector.java DateSelector.java
               src/main/org/apache/tools/ant/taskdefs Copy.java
                        DependSet.java
  Log:
  Made more consequent use of the method available in FileUtils to get the granularity.
  
  Revision  Changes    Path
  1.80      +16 -4     ant/src/main/org/apache/tools/ant/util/FileUtils.java
  
  Index: FileUtils.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/FileUtils.java,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- FileUtils.java	15 Dec 2004 12:10:43 -0000	1.79
  +++ FileUtils.java	4 Jan 2005 20:20:49 -0000	1.80
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2001-2004 The Apache Software Foundation
  + * Copyright  2001-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -58,11 +58,14 @@
    */
   
   public class FileUtils {
  +    
  +    private static final FileUtils PRIMARY_INSTANCE = new FileUtils();
  +    
       //get some non-crypto-grade randomness from various places.
       private static Random rand = new Random(System.currentTimeMillis()
               + Runtime.getRuntime().freeMemory());
   
  -    private boolean onNetWare = Os.isFamily("netware");
  +    private static boolean onNetWare = Os.isFamily("netware");
   
       // for toURI
       private static boolean[] isSpecial = new boolean[256];
  @@ -106,12 +109,22 @@
        * Factory method.
        *
        * @return a new instance of FileUtils.
  +     * @deprecated Use getFileUtils instead, FileUtils do not have state.
        */
       public static FileUtils newFileUtils() {
           return new FileUtils();
       }
   
       /**
  +     * Method to retrieve The FileUtils, which is shared by all users of this
  +     * method.
  +     * @return an instance of FileUtils.
  +     */
  +    public static FileUtils getFileUtils() {
  +        return PRIMARY_INSTANCE;
  +    }
  +
  +    /**
        * Empty constructor.
        */
       protected FileUtils() {
  @@ -1355,7 +1368,6 @@
       public boolean isUpToDate(long sourceTime, long destTime) {
           return isUpToDate(sourceTime, destTime, getFileTimestampGranularity());
       }
  -
   
       /**
        * close a writer without throwing any exception if something went wrong.
  
  
  
  1.14      +4 -4      ant/src/main/org/apache/tools/ant/types/selectors/MappingSelector.java
  
  Index: MappingSelector.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/selectors/MappingSelector.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- MappingSelector.java	9 Mar 2004 16:48:47 -0000	1.13
  +++ MappingSelector.java	4 Jan 2005 20:20:52 -0000	1.14
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2000-2004 The Apache Software Foundation
  + * Copyright  2000-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -40,7 +40,7 @@
        *
        */
       public MappingSelector() {
  -        granularity = (int) FileUtils.newFileUtils().getFileTimestampGranularity();
  +        granularity = (int) FileUtils.getFileUtils().getFileTimestampGranularity();
       }
   
   
  @@ -128,8 +128,8 @@
   
       /**
        * Sets the number of milliseconds leeway we will give before we consider
  -     * a file out of date. Defaults to 2000 on MS-DOS derivatives as the FAT
  -     * file system.
  +     * a file out of date. Defaults to 2000 on MS-DOS derivatives and 1000 on
  +     * others.
        * @param granularity the leeway in milliseconds
        */
       public void setGranularity(int granularity) {
  
  
  
  1.17      +4 -5      ant/src/main/org/apache/tools/ant/types/selectors/DateSelector.java
  
  Index: DateSelector.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/selectors/DateSelector.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- DateSelector.java	16 Dec 2004 15:02:48 -0000	1.16
  +++ DateSelector.java	4 Jan 2005 20:20:52 -0000	1.17
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2002-2004 The Apache Software Foundation
  + * Copyright  2002-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -27,6 +27,7 @@
   import org.apache.tools.ant.taskdefs.condition.Os;
   import org.apache.tools.ant.types.EnumeratedAttribute;
   import org.apache.tools.ant.types.Parameter;
  +import org.apache.tools.ant.util.FileUtils;
   
   /**
    * Selector that chooses files based on their last modified date.
  @@ -38,7 +39,7 @@
       private long millis = -1;
       private String dateTime = null;
       private boolean includeDirs = false;
  -    private int granularity = 0;
  +    private long granularity = 0;
       private int cmp = 2;
       private String pattern;
       /** Key to used for parameterized custom selector */
  @@ -59,9 +60,7 @@
        *
        */
       public DateSelector() {
  -        if (Os.isFamily("dos")) {
  -            granularity = 2000;
  -        }
  +        granularity = FileUtils.getFileUtils().getFileTimestampGranularity();
       }
   
       /**
  
  
  
  1.79      +3 -3      ant/src/main/org/apache/tools/ant/taskdefs/Copy.java
  
  Index: Copy.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Copy.java,v
  retrieving revision 1.78
  retrieving revision 1.79
  diff -u -r1.78 -r1.79
  --- Copy.java	4 Jan 2005 19:39:01 -0000	1.78
  +++ Copy.java	4 Jan 2005 20:20:52 -0000	1.79
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2000-2004 The Apache Software Foundation
  + * Copyright  2000-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -84,7 +84,7 @@
        * Copy task constructor.
        */
       public Copy() {
  -        fileUtils = FileUtils.newFileUtils();
  +        fileUtils = FileUtils.getFileUtils();
           granularity = fileUtils.getFileTimestampGranularity();
       }
   
  
  
  
  1.28      +6 -8      ant/src/main/org/apache/tools/ant/taskdefs/DependSet.java
  
  Index: DependSet.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/DependSet.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- DependSet.java	9 Mar 2004 16:48:04 -0000	1.27
  +++ DependSet.java	4 Jan 2005 20:20:52 -0000	1.28
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2001-2002,2004 The Apache Software Foundation
  + * Copyright  2001-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -27,6 +27,7 @@
   import org.apache.tools.ant.taskdefs.condition.Os;
   import org.apache.tools.ant.types.FileList;
   import org.apache.tools.ant.types.FileSet;
  +import org.apache.tools.ant.util.FileUtils;
   
   /**
    * Examines and removes out of date target files.  If any of the target files
  @@ -134,13 +135,10 @@
   
           long now = (new Date()).getTime();
           /*
  -          If we're on Windows, we have to munge the time up to 2 secs to
  -          be able to check file modification times.
  -          (Windows has a max resolution of two secs for modification times)
  +          We have to munge the time to allow for the filesystem time
  +          granularity.
           */
  -        if (Os.isFamily("windows")) {
  -            now += 2000;
  -        }
  +        now += FileUtils.getFileUtils().getFileTimestampGranularity();
   
           //
           // Grab all the target files specified via filesets
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Re: cvs commit: ant/src/main/org/apache/tools/ant/taskdefs Copy.java DependSet.java

Posted by Martijn Kruithof <jm...@kruithof.xs4all.nl>.
Hi

Unless anyone objects within the next few days I will apply a patch that 
will make use of getFileUtils instead of newFileUtils
in all files in a uniform way (122 files impacted).

I have manually checked if it could do any harm when using the same 
instance of the FileUtils everywhere and could not find a single spot 
where it could do harm.

The Copy task leaks the fileutils instance it created to derived 
classes, so there might be subclasses of Copy that assume for some 
reason that Copy would create a new fileutils for every instance. I 
chose to ignore the fact that such misuse might be made by subclasses of 
Copy. I did take into account that the derived class of Copy might have 
provided an own/other implementation of FileUtils. (Though I would have 
liked to ignore this).

Kind Regards, Martijn

jkf@apache.org wrote:

>jkf         2005/01/04 12:20:52
>
>  Modified:    src/main/org/apache/tools/ant/util FileUtils.java
>               src/main/org/apache/tools/ant/types/selectors
>                        MappingSelector.java DateSelector.java
>               src/main/org/apache/tools/ant/taskdefs Copy.java
>                        DependSet.java
>  Log:
>  Made more consequent use of the method available in FileUtils to get the granularity.
>  
>  Revision  Changes    Path
>  1.80      +16 -4     ant/src/main/org/apache/tools/ant/util/FileUtils.java
>  
>  Index: FileUtils.java
>  ===================================================================
>  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/FileUtils.java,v
>  retrieving revision 1.79
>  retrieving revision 1.80
>  diff -u -r1.79 -r1.80
>  --- FileUtils.java	15 Dec 2004 12:10:43 -0000	1.79
>  +++ FileUtils.java	4 Jan 2005 20:20:49 -0000	1.80
>        *
>        * @return a new instance of FileUtils.
>  +     * @deprecated Use getFileUtils instead, FileUtils do not have state.
>        */
>       public static FileUtils newFileUtils() {
>           return new FileUtils();
>       }
>   
>       /**
>  +     * Method to retrieve The FileUtils, which is shared by all users of this
>  +     * method.
>  +     * @return an instance of FileUtils.
>  +     */
>  +    public static FileUtils getFileUtils() {
>  +        return PRIMARY_INSTANCE;
>  +    }
>  +
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org