in agent/src/jetbrains/buildServer/xmlReportPlugin/MonitorRulesCommand.java [59:106]
public void run() {
if (myFirstRun) {
if (!myQuietMode) {
logWatchingPaths();
}
myFirstRun = false;
}
monitorRules(
new MonitorRulesFileProcessor() {
public void processFile(@NotNull File file) {
if (acceptFile(file)) {
final long fileLastModified = file.lastModified();
final long fileLength = file.length();
if (timeConstraintsSatisfied(fileLastModified)) {
switch (myReportStateHolder.getReportState(file)) {
case ON_PROCESSING:
return;
case UNKNOWN:
myReportStateHolder.setReportState(file, ReportStateHolder.ReportState.ON_PROCESSING, fileLastModified, fileLength);
modificationDetected(file);
return;
case PROCESSED:
if (!myParameters.isReparseUpdated()) return;
case ERROR:
case OUT_OF_DATE:
final Long lastModified = myReportStateHolder.getLastModified(file);
final Long length = myReportStateHolder.getLength(file);
assert lastModified != null;
assert length != null;
if (fileLastModified > lastModified || fileLength > length) {
myReportStateHolder.setReportState(file, ReportStateHolder.ReportState.ON_PROCESSING, fileLastModified, fileLength);
modificationDetected(file);
}
}
} else {
myReportStateHolder.setReportState(file, ReportStateHolder.ReportState.OUT_OF_DATE, fileLastModified, fileLength);
}
}
}
}
);
}