Correctly report locations of output files

This commit is contained in:
Andrey Breslav
2013-10-18 18:17:53 +04:00
parent 251c659e91
commit c84e582397
5 changed files with 17 additions and 27 deletions
@@ -251,10 +251,19 @@ public class CompileEnvironmentUtil {
};
}
public static void writeToOutputWithDirector(ClassFileFactory factory, @NotNull OutputDirector outputDirector) {
public static void writeToOutputWithDirector(
ClassFileFactory factory,
@NotNull OutputDirector outputDirector,
@NotNull MessageCollector messageCollector
) {
List<String> files = factory.files();
for (String file : files) {
File target = new File(outputDirector.getOutputDirectory(factory.getSourceFiles(file)), file);
List<File> sourceFiles = factory.getSourceFiles(file);
File target = new File(outputDirector.getOutputDirectory(sourceFiles), file);
messageCollector.report(
CompilerMessageSeverity.OUTPUT,
OutputMessageUtil.formatOutputMessage(sourceFiles, target),
CompilerMessageLocation.NO_LOCATION);
try {
FileUtil.writeToFile(target, factory.asBytes(file));
}
@@ -265,7 +274,7 @@ public class CompileEnvironmentUtil {
}
public static void writeToOutputDirectory(ClassFileFactory factory, @NotNull File outputDir) {
writeToOutputWithDirector(factory, singleDirectory(outputDir));
writeToOutputWithDirector(factory, singleDirectory(outputDir), MessageCollector.NONE);
}
// Used for debug output only
@@ -292,25 +301,13 @@ public class CompileEnvironmentUtil {
writeToJar(jar, includeRuntime, mainClass, factory);
}
else if (outputDir != null) {
reportOutputs(factory, messageCollector);
writeToOutputWithDirector(factory, outputDir);
writeToOutputWithDirector(factory, outputDir, messageCollector);
}
else {
throw new CompileEnvironmentException("Output directory or jar file is not specified - no files will be saved to the disk");
}
}
private static void reportOutputs(ClassFileFactory factory, MessageCollector messageCollector) {
for (String outputFile : factory.files()) {
List<File> sourceFiles = factory.getSourceFiles(outputFile);
messageCollector.report(
CompilerMessageSeverity.OUTPUT,
OutputMessageUtil.formatOutputMessage(sourceFiles, new File(outputFile)),
CompilerMessageLocation.NO_LOCATION);
}
}
private static class DescriptionToModuleAdapter implements Module {
private final ModuleDescription description;