From 71446690d85877702fc8edbe2f1f71914abd290a Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 2 Sep 2005 15:32:34 +0400 Subject: [PATCH] refresh files after copying --- .../com/intellij/compiler/impl/CompilerUtil.java | 29 +++++++++++++++------- source/com/intellij/diagnostic/LogMessage.java | 5 ++-- .../j2ee/make/FileCopyInstructionImpl.java | 12 +++++++++ .../openapi/roots/impl/ProjectRootManagerImpl.java | 14 +++++++++-- 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/source/com/intellij/compiler/impl/CompilerUtil.java b/source/com/intellij/compiler/impl/CompilerUtil.java index 8b6033b854..1605c95743 100644 --- a/source/com/intellij/compiler/impl/CompilerUtil.java +++ b/source/com/intellij/compiler/impl/CompilerUtil.java @@ -18,6 +18,7 @@ import java.awt.*; import java.io.File; import java.io.FileFilter; import java.util.Collection; +import java.util.Map; public class CompilerUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.compiler.impl.CompilerUtil"); @@ -45,13 +46,12 @@ public class CompilerUtil { return false; } }; - public static void collectFiles(Collection container, File rootDir, FileFilter fileFilter) { + public static void collectFiles(Collection container, File rootDir, FileFilter fileFilter) { final File[] files = rootDir.listFiles(fileFilter); if (files == null) { return; } - for (int idx = 0; idx < files.length; idx++) { - File file = files[idx]; + for (File file : files) { if (file.isDirectory()) { collectFiles(container, file, fileFilter); } @@ -67,8 +67,8 @@ public class CompilerUtil { } doRefresh(new Runnable() { public void run() { - for (int idx = 0; idx < paths.length; idx++) { - final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByPath(paths[idx].replace(File.separatorChar, '/')); + for (String path : paths) { + final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByPath(path.replace(File.separatorChar, '/')); if (file != null) { file.refresh(false, false); } @@ -88,8 +88,8 @@ public class CompilerUtil { } doRefresh(new Runnable() { public void run() { - for (int idx = 0; idx < files.length; idx++) { - final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(files[idx]); + for (File file1 : files) { + final VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file1); if (file != null) { file.refresh(false, false); } @@ -112,8 +112,19 @@ public class CompilerUtil { public static void refreshVirtualFiles(final VirtualFile[] files) { doRefresh(new Runnable() { public void run() { - for (int idx = 0; idx < files.length; idx++) { - files[idx].refresh(false, false); + for (VirtualFile file : files) { + file.refresh(false, false); + } + } + }); + } + // file -> true/false for refresh recursively/non recursively coorespondingly + public static void refreshVirtualFiles(final Map filesToRefresh) { + doRefresh(new Runnable() { + public void run() { + for (VirtualFile virtualFile : filesToRefresh.keySet()) { + boolean recursively = filesToRefresh.get(virtualFile).booleanValue(); + virtualFile.refresh(false, recursively); } } }); diff --git a/source/com/intellij/diagnostic/LogMessage.java b/source/com/intellij/diagnostic/LogMessage.java index a114b1a5b1..6213a87323 100644 --- a/source/com/intellij/diagnostic/LogMessage.java +++ b/source/com/intellij/diagnostic/LogMessage.java @@ -20,9 +20,10 @@ public class LogMessage extends AbstractMessage { myThrowable = aEvent.getThrowableInformation() == null ? null : aEvent.getThrowableInformation().getThrowable(); - if (aEvent.getMessage().toString().length() == 0) { + if (aEvent.getMessage() == null || aEvent.getMessage().toString().length() == 0) { myHeader = getThrowable().toString(); - } else { + } + else { myHeader = aEvent.getMessage().toString(); } } diff --git a/source/com/intellij/j2ee/make/FileCopyInstructionImpl.java b/source/com/intellij/j2ee/make/FileCopyInstructionImpl.java index 91f364f80a..ab0317c619 100644 --- a/source/com/intellij/j2ee/make/FileCopyInstructionImpl.java +++ b/source/com/intellij/j2ee/make/FileCopyInstructionImpl.java @@ -51,6 +51,18 @@ public class FileCopyInstructionImpl extends BuildInstructionBase implements Fil } } + public void addFilesToRefresh(File outputDir, Set filesToRefresh) { + if (myChangedSet == null) { + final File to = MakeUtil.canonicalRelativePath(outputDir, getOutputRelativePath()); + filesToRefresh.add(to); + } + else { + for (FileCopyInstructionImpl singleFileCopyInstruction : myChangedSet) { + singleFileCopyInstruction.addFilesToRefresh(outputDir, filesToRefresh); + } + } + } + public boolean accept(BuildInstructionVisitor visitor) throws Exception { return visitor.visitFileCopyInstruction(this); } diff --git a/source/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java b/source/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java index 6d26510c71..6abc9743e2 100644 --- a/source/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java +++ b/source/com/intellij/openapi/roots/impl/ProjectRootManagerImpl.java @@ -22,6 +22,7 @@ import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.ex.ProjectRootManagerEx; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; +import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; @@ -29,7 +30,6 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.pointers.VirtualFilePointer; import com.intellij.openapi.vfs.pointers.VirtualFilePointerListener; -import com.intellij.openapi.ui.Messages; import com.intellij.pom.java.LanguageLevel; import com.intellij.util.EventDispatcher; import com.intellij.util.containers.HashMap; @@ -437,7 +437,7 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj if (compilerOutputPathForTests != null) { contentRoots.add(compilerOutputPathForTests); } - + final VirtualFile moduleFile = module.getModuleFile(); if (moduleFile != null) { contentRoots.add(moduleFile); @@ -468,6 +468,16 @@ public class ProjectRootManagerImpl extends ProjectRootManagerEx implements Proj } myRootsToWatch.addAll(LocalFileSystem.getInstance().addRootsToWatch(libraryRoots, false)); + + Set explodedDirs = new HashSet(); + for (Module module : modules) { + final ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module); + final VirtualFile explodedDirectory = moduleRootManager.getExplodedDirectory(); + if (explodedDirectory != null) { + explodedDirs.add(explodedDirectory); + } + } + myRootsToWatch.addAll(LocalFileSystem.getInstance().addRootsToWatch(explodedDirs, true)); } private Collection getRootsToTrack(final Library library, final OrderRootType rootType) { -- 2.11.4.GIT