@@ -92,6 +92,7 @@ public class DependSet extends MatchingTask {
/**
/**
* Add a set of source files.
* Add a set of source files.
* @param fs the FileSet to add.
*/
*/
public void addSrcfileset(FileSet fs) {
public void addSrcfileset(FileSet fs) {
sourceFileSets.addElement(fs);
sourceFileSets.addElement(fs);
@@ -99,6 +100,7 @@ public class DependSet extends MatchingTask {
/**
/**
* Add a list of source files.
* Add a list of source files.
* @param fl the FileList to add.
*/
*/
public void addSrcfilelist(FileList fl) {
public void addSrcfilelist(FileList fl) {
sourceFileLists.addElement(fl);
sourceFileLists.addElement(fl);
@@ -106,6 +108,7 @@ public class DependSet extends MatchingTask {
/**
/**
* Add a set of target files.
* Add a set of target files.
* @param fs the FileSet to add.
*/
*/
public void addTargetfileset(FileSet fs) {
public void addTargetfileset(FileSet fs) {
targetFileSets.addElement(fs);
targetFileSets.addElement(fs);
@@ -113,6 +116,7 @@ public class DependSet extends MatchingTask {
/**
/**
* Add a list of target files.
* Add a list of target files.
* @param fl the FileList to add.
*/
*/
public void addTargetfilelist(FileList fl) {
public void addTargetfilelist(FileList fl) {
targetFileLists.addElement(fl);
targetFileLists.addElement(fl);
@@ -120,20 +124,18 @@ public class DependSet extends MatchingTask {
/**
/**
* Executes the task.
* Executes the task.
* @throws BuildException if errors occur.
*/
*/
public void execute() throws BuildException {
public void execute() throws BuildException {
if ((sourceFileSets.size() == 0) && (sourceFileLists.size() == 0)) {
if ((sourceFileSets.size() == 0) && (sourceFileLists.size() == 0)) {
throw new BuildException("At least one <srcfileset> or <srcfilelist>"
throw new BuildException("At least one <srcfileset> or <srcfilelist>"
+ " element must be set");
+ " element must be set");
}
}
if ((targetFileSets.size() == 0) && (targetFileLists.size() == 0)) {
if ((targetFileSets.size() == 0) && (targetFileLists.size() == 0)) {
throw new BuildException("At least one <targetfileset> or"
throw new BuildException("At least one <targetfileset> or"
+ " <targetfilelist> element must be set");
+ " <targetfilelist> element must be set");
}
}
long now = (new Date()).getTime();
long now = (new Date()).getTime();
/*
/*
We have to munge the time to allow for the filesystem time
We have to munge the time to allow for the filesystem time
@@ -141,10 +143,8 @@ public class DependSet extends MatchingTask {
*/
*/
now += FILE_UTILS.getFileTimestampGranularity();
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;
long oldestTargetTime = 0;
File oldestTarget = null;
File oldestTarget = null;
Enumeration enumTargetSets = targetFileSets.elements();
Enumeration enumTargetSets = targetFileSets.elements();
@@ -155,7 +155,6 @@ public class DependSet extends MatchingTask {
// this is the same as if it was empty, no target files found
// this is the same as if it was empty, no target files found
continue;
continue;
}
}
DirectoryScanner targetDS = targetFS.getDirectoryScanner(getProject());
DirectoryScanner targetDS = targetFS.getDirectoryScanner(getProject());
String[] targetFiles = targetDS.getIncludedFiles();
String[] targetFiles = targetDS.getIncludedFiles();
@@ -168,7 +167,6 @@ public class DependSet extends MatchingTask {
log("Warning: " + targetFiles[i] + " modified in the future.",
log("Warning: " + targetFiles[i] + " modified in the future.",
Project.MSG_WARN);
Project.MSG_WARN);
}
}
if (oldestTarget == null
if (oldestTarget == null
|| dest.lastModified() < oldestTargetTime) {
|| dest.lastModified() < oldestTargetTime) {
oldestTargetTime = dest.lastModified();
oldestTargetTime = dest.lastModified();
@@ -176,11 +174,8 @@ public class DependSet extends MatchingTask {
}
}
}
}
}
}
//
// 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();
Enumeration enumTargetLists = targetFileLists.elements();
while (enumTargetLists.hasMoreElements()) {
while (enumTargetLists.hasMoreElements()) {
@@ -201,7 +196,6 @@ public class DependSet extends MatchingTask {
log("Warning: " + targetFiles[i] + " modified in the future.",
log("Warning: " + targetFiles[i] + " modified in the future.",
Project.MSG_WARN);
Project.MSG_WARN);
}
}
if (oldestTarget == null
if (oldestTarget == null
|| dest.lastModified() < oldestTargetTime) {
|| dest.lastModified() < oldestTargetTime) {
oldestTargetTime = dest.lastModified();
oldestTargetTime = dest.lastModified();
@@ -216,10 +210,7 @@ public class DependSet extends MatchingTask {
// skip the following tests right away
// skip the following tests right away
upToDate = false;
upToDate = false;
}
}
//
// Check targets vs source files specified via filelists
//
// Check targets vs source files specified via filelists:
if (upToDate) {
if (upToDate) {
Enumeration enumSourceLists = sourceFileLists.elements();
Enumeration enumSourceLists = sourceFileLists.elements();
while (upToDate && enumSourceLists.hasMoreElements()) {
while (upToDate && enumSourceLists.hasMoreElements()) {
@@ -234,14 +225,12 @@ public class DependSet extends MatchingTask {
log("Warning: " + sourceFiles[i]
log("Warning: " + sourceFiles[i]
+ " modified in the future.", Project.MSG_WARN);
+ " modified in the future.", Project.MSG_WARN);
}
}
if (!src.exists()) {
if (!src.exists()) {
log(sourceFiles[i] + " does not exist.",
log(sourceFiles[i] + " does not exist.",
Project.MSG_VERBOSE);
Project.MSG_VERBOSE);
upToDate = false;
upToDate = false;
break;
break;
}
}
if (src.lastModified() > oldestTargetTime) {
if (src.lastModified() > oldestTargetTime) {
upToDate = false;
upToDate = false;
log(oldestTarget + " is out of date with respect to "
log(oldestTarget + " is out of date with respect to "
@@ -250,15 +239,12 @@ public class DependSet extends MatchingTask {
}
}
}
}
}
}
//
// Check targets vs source files specified via filesets
//
// Check targets vs source files specified via filesets:
if (upToDate) {
if (upToDate) {
Enumeration enumSourceSets = sourceFileSets.elements();
Enumeration enumSourceSets = sourceFileSets.elements();
while (upToDate && enumSourceSets.hasMoreElements()) {
while (upToDate && enumSourceSets.hasMoreElements()) {
FileSet sourceFS = (FileSet) enumSourceSets.nextElement();
FileSet sourceFS = (FileSet) enumSourceSets.nextElement();
DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(getProject());
DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(getProject());
String[] sourceFiles = sourceDS.getIncludedFiles();
String[] sourceFiles = sourceDS.getIncludedFiles();
@@ -269,7 +255,6 @@ public class DependSet extends MatchingTask {
log("Warning: " + sourceFiles[i]
log("Warning: " + sourceFiles[i]
+ " modified in the future.", Project.MSG_WARN);
+ " modified in the future.", Project.MSG_WARN);
}
}
if (src.lastModified() > oldestTargetTime) {
if (src.lastModified() > oldestTargetTime) {
upToDate = false;
upToDate = false;
log(oldestTarget + " is out of date with respect to "
log(oldestTarget + " is out of date with respect to "
@@ -278,7 +263,6 @@ public class DependSet extends MatchingTask {
}
}
}
}
}
}
if (!upToDate) {
if (!upToDate) {
log("Deleting all target files. ", Project.MSG_VERBOSE);
log("Deleting all target files. ", Project.MSG_VERBOSE);
for (Enumeration e = allTargets.elements(); e.hasMoreElements();) {
for (Enumeration e = allTargets.elements(); e.hasMoreElements();) {
@@ -288,7 +272,5 @@ public class DependSet extends MatchingTask {
fileToRemove.delete();
fileToRemove.delete();
}
}
}
}
} //-- execute
} //-- DependSet.java
}
}