send FileGenerated event about just copied form runtime classes (affects IDEA-94779 Automatically copy form runtime classe to output directory)

This commit is contained in:
Eugene Zhuravlev
2012-11-15 18:43:09 +01:00
parent 9ef135fda3
commit fcc10bf987
2 changed files with 17 additions and 3 deletions
@@ -43,6 +43,7 @@ import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.Utils;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
import org.jetbrains.jps.incremental.messages.FileGeneratedEvent;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.incremental.storage.BuildDataManager;
import org.jetbrains.jps.incremental.storage.OneToManyPathsMapping;
@@ -366,7 +367,19 @@ public class JavaBuilder extends ModuleLevelBuilder {
if (!target.isTests()) {
final File outputDir = target.getOutputDir();
if (outputDir != null) {
CopyResourcesUtil.copyFormsRuntime(outputDir.getAbsolutePath(), false);
final String outputRoot = FileUtil.toSystemIndependentName(outputDir.getPath());
final List<File> generatedFiles = CopyResourcesUtil.copyFormsRuntime(outputRoot, false);
if (!generatedFiles.isEmpty()) {
// now inform others about files just copied
final FileGeneratedEvent event = new FileGeneratedEvent();
for (File file : generatedFiles) {
final String relativePath = FileUtil.getRelativePath(outputRoot, FileUtil.toSystemIndependentName(file.getPath()), '/');
if (relativePath != null) {
event.add(outputRoot, relativePath);
}
}
context.processMessage(event);
}
}
}
}
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.uiDesigner.core.AbstractLayout;
import java.io.File;
import java.io.IOException;
@@ -51,8 +52,8 @@ public class UiDesignerExternalBuildTest extends ArtifactCompilerTestCase {
File outputDir = VfsUtilCore.virtualToIoFile(getOutputDir(a));
assertTrue(new File(outputDir, "A.class").exists());
assertTrue(new File(outputDir, "B.class").exists());
//todo[jeka] fix
//assertTrue(new File(outputDir, AbstractLayout.class.getName().replace('.', '/') + ".class").exists());
assertTrue(new File(outputDir, AbstractLayout.class.getName().replace('.', '/') + ".class").exists());
}
}