Skip to content

Commit

Permalink
Fix JENKINS-12924
Browse files Browse the repository at this point in the history
  • Loading branch information
gboissinot committed Mar 10, 2012
1 parent 16dd331 commit 9ff1c5f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 9 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -37,7 +37,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<xtrigger.lib.version>0.8</xtrigger.lib.version>
<xtrigger.lib.version>0.10</xtrigger.lib.version>
<junit.version>4.8.2</junit.version>
<mockito.version>1.8.5</mockito.version>
</properties>
Expand Down
Expand Up @@ -50,7 +50,6 @@ public class FileNameTrigger extends AbstractTrigger {

private FileNameTriggerInfo[] fileInfo = new FileNameTriggerInfo[0];


public FileNameTrigger(String cronTabSpec, FileNameTriggerInfo[] fileInfo) throws ANTLRException {
super(cronTabSpec);
this.fileInfo = fileInfo;
Expand Down Expand Up @@ -159,24 +158,54 @@ private void refreshMemoryInfo(FileNameTriggerInfo info, FilePath newComputedFil
@Override
protected boolean checkIfModified(Node pollingNode, XTriggerLog log) throws XTriggerException {

for (FileNameTriggerInfo info : fileInfo) {
FilePath newResolvedFile = new FSTriggerComputeFileService().computedFile(pollingNode, (AbstractProject) job, info, log);
//1-- Compute new resolved files
FilePath[] resolvedFiles = getNewResolvedFiles(pollingNode, log);

//2-- Check if there are at least one change
boolean changeResult = checkIfThereAreAtLeastOneChange(resolvedFiles, log);

//3-- Refresh new resolved files
refreshNewResolvedFiles(resolvedFiles);

//4-- Return change status
return changeResult;
}


private FilePath[] getNewResolvedFiles(Node pollingNode, XTriggerLog log) throws XTriggerException {
FilePath[] resolvedFiles = new FilePath[fileInfo.length];
for (int i = 0; i < fileInfo.length; i++) {
FileNameTriggerInfo info = fileInfo[i];
FilePath resolvedFile = new FSTriggerComputeFileService().computedFile(pollingNode, (AbstractProject) job, info, log);
resolvedFiles[i] = resolvedFile;
}
return resolvedFiles;
}

private boolean checkIfThereAreAtLeastOneChange(FilePath[] resolvedFiles, XTriggerLog log) throws XTriggerException {
for (int i = 0; i < resolvedFiles.length; i++) {
if (offlineSlaveOnStartup) {
log.info("Slave(s) were offline at startup. Waiting for next schedule to check if there are modifications.");
log.info("No nodes were available at startup or at previous poll.");
offlineSlaveOnStartup = false;
refreshMemoryInfo(info, newResolvedFile);
continue;
return false;
}

boolean changed = checkIfModifiedFile(newResolvedFile, info, log);
refreshMemoryInfo(info, newResolvedFile);
FileNameTriggerInfo info = fileInfo[i];
FilePath resolvedFile = resolvedFiles[i];
boolean changed = checkIfModifiedFile(resolvedFile, info, log);
if (changed) {
return true;
}
}
return false;
}

private void refreshNewResolvedFiles(FilePath[] resolvedFiles) throws XTriggerException {
for (int i = 0; i < resolvedFiles.length; i++) {
refreshMemoryInfo(fileInfo[i], resolvedFiles[i]);
}
}

private boolean checkIfModifiedFile(FilePath newResolvedFile, final FileNameTriggerInfo info, final XTriggerLog log) throws XTriggerException {

// Do not trigger a build if the new computed file doesn't exist.
Expand Down

0 comments on commit 9ff1c5f

Please sign in to comment.