pluginReference = this.plugins.get(pluginName);
}
if (pluginReference == null) {
continue;
}
VersionControlIgnoresPlugin plugin = (VersionControlIgnoresPlugin) getService(pluginReference);
if (plugin == null) {
continue;
}
Map<String,String> sourceOutputLocations = JavaProjectUtils.getSourceOutputLocations(project);
if (sourceOutputLocations == null) {
/* fallback to using defaults */
sourceOutputLocations = new LinkedHashMap<String,String>();
sourceOutputLocations.put(projectPaths.getSrc(), projectPaths.getBin());
sourceOutputLocations.put(projectPaths.getTestSrc(), projectPaths.getTestBin());
}
List<String> emptyIgnores = new LinkedList<String>();
List<String> projectIgnores = new LinkedList<String>();
File projectDir = project.getProject().getLocation().toFile();
for (Map.Entry<String,String> sourceOutputLocation : sourceOutputLocations.entrySet()) {
String srcDir = sourceOutputLocation.getKey();
String binDir = sourceOutputLocation.getValue();
assert (srcDir != null);
assert (binDir != null);
File srcDirFile = new File(projectDir, srcDir);
/*
* when the version control system can't store empty directories and
* the source directory doesn't exist or is empty, then add empty ignores
*/
if (!plugin.canStoreEmptyDirectories() && (!srcDirFile.exists() || (srcDirFile.list().length == 0))) {
try {
plugin.addIgnores(srcDirFile, emptyIgnores);
} catch (Throwable e) {
logger.logError(String.format("Unable to add empty %s ignores to the project in %s", plugin.getInformation().getName(), projectDir), e);
}
}
/* add the corresponding output location to the project ignores */
projectIgnores.add(sanitiseGitIgnoreGlob(true, binDir, true));
}
/* add the target directory to the project ignores */
projectIgnores.add(sanitiseGitIgnoreGlob(true, projectPaths.getTargetDir(), true));
try {
plugin.addIgnores(projectDir, projectIgnores);
} catch (Throwable e) {
logger.logError(String.format("Unable to add %s ignores %s to the project in %s", plugin.getInformation().getName(), projectIgnores, projectDir), e);
}
}
}