aboutsummaryrefslogtreecommitdiffstats
path: root/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java')
-rw-r--r--src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java b/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java
index e00b05b55..b089a361e 100644
--- a/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java
+++ b/src/codegen/java/org/apache/fop/tools/EventProducerCollectorTask.java
@@ -63,16 +63,21 @@ public class EventProducerCollectorTask extends Task {
public void execute() throws BuildException {
try {
EventProducerCollector collector = new EventProducerCollector();
- processFileSets(collector);
+ long lastModified = processFileSets(collector);
File parentDir = getModelFile().getParentFile();
if (!parentDir.exists() && !parentDir.mkdirs()) {
throw new BuildException(
"Could not create target directory for event model file: " + parentDir);
}
- collector.saveModelToXML(getModelFile());
- log("Event model written to " + getModelFile());
+ if (!getModelFile().exists() || lastModified > getModelFile().lastModified()) {
+ collector.saveModelToXML(getModelFile());
+ log("Event model written to " + getModelFile());
+ }
if (getTranslationFile() != null) {
- updateTranslationFile();
+ if (!getTranslationFile().exists()
+ || lastModified > getTranslationFile().lastModified()) {
+ updateTranslationFile();
+ }
}
} catch (ClassNotFoundException e) {
throw new BuildException(e);
@@ -164,12 +169,14 @@ public class EventProducerCollectorTask extends Task {
/**
* Processes the file sets defined for the task.
* @param collector the collector to use for collecting the event producers
+ * @return the time of the latest modification of any of the files inspected
* @throws IOException if an I/O error occurs
* @throws EventConventionException if the EventProducer conventions are violated
* @throws ClassNotFoundException if a required class cannot be found
*/
- protected void processFileSets(EventProducerCollector collector)
+ protected long processFileSets(EventProducerCollector collector)
throws IOException, EventConventionException, ClassNotFoundException {
+ long lastModified = 0;
Iterator iter = filesets.iterator();
while (iter.hasNext()) {
FileSet fs = (FileSet)iter.next();
@@ -179,9 +186,13 @@ public class EventProducerCollectorTask extends Task {
for (int i = 0, c = srcFiles.length; i < c; i++) {
String filename = srcFiles[i];
File src = new File(directory, filename);
- collector.scanFile(src);
+ boolean eventProducerFound = collector.scanFile(src);
+ if (eventProducerFound) {
+ lastModified = Math.max(lastModified, src.lastModified());
+ }
}
}
+ return lastModified;
}
/**