Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fixed JENKINS-17545 : reusing matchingFilesFrom() method for matches(…
…) implementation in PatternsEntityMatcher

In this way, we should avoid the different behaviour DirectoryScanner.match() has (concerning wildcards) compared to scan() with includes
  • Loading branch information
fcamblor committed May 22, 2013
1 parent 1ca6bd6 commit b033c59
Showing 1 changed file with 8 additions and 12 deletions.
@@ -1,46 +1,42 @@
package hudson.plugins.scm_sync_configuration.strategies.model;

import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import hudson.model.Hudson;
import hudson.model.Saveable;
import hudson.plugins.scm_sync_configuration.JenkinsFilesHelper;
import org.apache.tools.ant.DirectoryScanner;

import javax.annotation.Nullable;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;

public class PatternsEntityMatcher implements ConfigurationEntityMatcher {

private String[] patterns;
private String[] includesPatterns;

public PatternsEntityMatcher(String[] patterns) {
this.patterns = patterns;
}
public PatternsEntityMatcher(String[] includesPatterns){
this.includesPatterns = includesPatterns;
}

public boolean matches(Saveable saveable, File file) {
if (file == null) {
return false;
}
String filePathRelativeToHudsonRoot = JenkinsFilesHelper.buildPathRelativeToHudsonRoot(file);
for(String pattern : patterns) {
if(DirectoryScanner.match(pattern, filePathRelativeToHudsonRoot)){
for(String matchingFile : matchingFilesFrom(Hudson.getInstance().getRootDir())) {
if(matchingFile.equals(filePathRelativeToHudsonRoot)){
return true;
}
}
return false;
}

public List<String> getIncludes(){
return Arrays.asList(patterns);
return Arrays.asList(includesPatterns);
}

public String[] matchingFilesFrom(File rootDirectory) {
DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(patterns);
scanner.setIncludes(includesPatterns);
scanner.setBasedir(rootDirectory);
scanner.scan();
return scanner.getIncludedFiles();
Expand Down

0 comments on commit b033c59

Please sign in to comment.