mbenson 2005/01/27 09:04:34 Modified: src/main/org/apache/tools/ant/taskdefs Tag: ANT_16_BRANCH DependSet.java Log: Sync with HEAD Revision Changes Path No revision No revision 1.23.2.5 +22 -41 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.23.2.4 retrieving revision 1.23.2.5 diff -u -r1.23.2.4 -r1.23.2.5 --- DependSet.java 9 Mar 2004 17:01:33 -0000 1.23.2.4 +++ DependSet.java 27 Jan 2005 17:04:34 -0000 1.23.2.5 @@ -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. @@ -24,9 +24,9 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; -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 @@ -77,6 +77,8 @@ */ public class DependSet extends MatchingTask { + private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); + private Vector sourceFileSets = new Vector(); private Vector sourceFileLists = new Vector(); private Vector targetFileSets = new Vector(); @@ -90,6 +92,7 @@ /** * Add a set of source files. + * @param fs the FileSet to add. */ public void addSrcfileset(FileSet fs) { sourceFileSets.addElement(fs); @@ -97,6 +100,7 @@ /** * Add a list of source files. + * @param fl the FileList to add. */ public void addSrcfilelist(FileList fl) { sourceFileLists.addElement(fl); @@ -104,6 +108,7 @@ /** * Add a set of target files. + * @param fs the FileSet to add. */ public void addTargetfileset(FileSet fs) { targetFileSets.addElement(fs); @@ -111,6 +116,7 @@ /** * Add a list of target files. + * @param fl the FileList to add. */ public void addTargetfilelist(FileList fl) { targetFileLists.addElement(fl); @@ -118,34 +124,27 @@ /** * Executes the task. + * @throws BuildException if errors occur. */ - public void execute() throws BuildException { if ((sourceFileSets.size() == 0) && (sourceFileLists.size() == 0)) { throw new BuildException("At least one <srcfileset> or <srcfilelist>" + " element must be set"); } - if ((targetFileSets.size() == 0) && (targetFileLists.size() == 0)) { throw new BuildException("At least one <targetfileset> or" + " <targetfilelist> element must be set"); } - 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 += FILE_UTILS.getFileTimestampGranularity(); - // - // Grab all the target files specified via filesets - // - Vector allTargets = new Vector(); + // Grab all the target files specified via filesets: + Vector allTargets = new Vector(); long oldestTargetTime = 0; File oldestTarget = null; Enumeration enumTargetSets = targetFileSets.elements(); @@ -156,7 +155,6 @@ // this is the same as if it was empty, no target files found continue; } - DirectoryScanner targetDS = targetFS.getDirectoryScanner(getProject()); String[] targetFiles = targetDS.getIncludedFiles(); @@ -169,7 +167,6 @@ log("Warning: " + targetFiles[i] + " modified in the future.", Project.MSG_WARN); } - if (oldestTarget == null || dest.lastModified() < oldestTargetTime) { oldestTargetTime = dest.lastModified(); @@ -177,11 +174,8 @@ } } } - - // - // Grab all the target files specified via filelists - // - boolean upToDate = true; + // Grab all the target files specified via filelists: + boolean upToDate = true; Enumeration enumTargetLists = targetFileLists.elements(); while (enumTargetLists.hasMoreElements()) { @@ -202,7 +196,6 @@ log("Warning: " + targetFiles[i] + " modified in the future.", Project.MSG_WARN); } - if (oldestTarget == null || dest.lastModified() < oldestTargetTime) { oldestTargetTime = dest.lastModified(); @@ -217,10 +210,7 @@ // skip the following tests right away upToDate = false; } - - // - // Check targets vs source files specified via filelists - // + // Check targets vs source files specified via filelists: if (upToDate) { Enumeration enumSourceLists = sourceFileLists.elements(); while (upToDate && enumSourceLists.hasMoreElements()) { @@ -235,14 +225,12 @@ log("Warning: " + sourceFiles[i] + " modified in the future.", Project.MSG_WARN); } - if (!src.exists()) { log(sourceFiles[i] + " does not exist.", Project.MSG_VERBOSE); upToDate = false; break; } - if (src.lastModified() > oldestTargetTime) { upToDate = false; log(oldestTarget + " is out of date with respect to " @@ -251,15 +239,12 @@ } } } - - // - // Check targets vs source files specified via filesets - // + // Check targets vs source files specified via filesets: if (upToDate) { Enumeration enumSourceSets = sourceFileSets.elements(); while (upToDate && enumSourceSets.hasMoreElements()) { - FileSet sourceFS = (FileSet) enumSourceSets.nextElement(); + FileSet sourceFS = (FileSet) enumSourceSets.nextElement(); DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(getProject()); String[] sourceFiles = sourceDS.getIncludedFiles(); @@ -270,7 +255,6 @@ log("Warning: " + sourceFiles[i] + " modified in the future.", Project.MSG_WARN); } - if (src.lastModified() > oldestTargetTime) { upToDate = false; log(oldestTarget + " is out of date with respect to " @@ -279,7 +263,6 @@ } } } - if (!upToDate) { log("Deleting all target files. ", Project.MSG_VERBOSE); for (Enumeration e = allTargets.elements(); e.hasMoreElements();) { @@ -289,7 +272,5 @@ fileToRemove.delete(); } } - - } //-- execute - -} //-- DependSet.java + } +}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]