Merge remote branch 'origin/master'

This commit is contained in:
irengrig
2012-10-30 22:29:26 +04:00
13 changed files with 39 additions and 22 deletions
@@ -47,7 +47,7 @@ public abstract class BuildTarget<R extends BuildRootDescriptor> {
public abstract String getPresentableName();
@NotNull
public abstract Collection<File> getOutputDirs(CompileContext context);
public abstract Collection<File> getOutputRoots(CompileContext context);
@Override
public String toString() {
@@ -139,17 +139,17 @@ public class BuildOperations {
myTarget = target;
myContext = context;
myFileGeneratedEvent = new FileGeneratedEvent();
myOutputs = myTarget.getOutputDirs(context);
myOutputs = myTarget.getOutputRoots(context);
}
@Override
public void registerOutputFile(String outputFilePath, Collection<String> sourceFiles) throws IOException {
final File outputFile = new File(outputFilePath);
for (File outputDir : myOutputs) {
if (FileUtil.isAncestor(outputDir, outputFile, true)) {
final String relativePath = FileUtil.getRelativePath(outputDir, outputFile);
for (File outputRoot : myOutputs) {
if (FileUtil.isAncestor(outputRoot, outputFile, false)) {
final String relativePath = FileUtil.getRelativePath(outputRoot, outputFile);
if (relativePath != null) {
myFileGeneratedEvent.add(FileUtil.toSystemIndependentName(outputDir.getPath()), FileUtil.toSystemIndependentName(relativePath));
myFileGeneratedEvent.add(FileUtil.toSystemIndependentName(outputRoot.getPath()), FileUtil.toSystemIndependentName(relativePath));
}
break;
}
@@ -322,7 +322,7 @@ public class IncProjectBuilder {
ProjectDescriptor projectDescriptor = context.getProjectDescriptor();
for (BuildTarget<?> target : projectDescriptor.getBuildTargetIndex().getAllTargets()) {
final Collection<File> outputs = target.getOutputDirs(context);
final Collection<File> outputs = target.getOutputRoots(context);
for (File file : outputs) {
rootsToDelete.putValue(file, target);
}
@@ -363,6 +363,9 @@ public class IncProjectBuilder {
if (children != null) {
filesToDelete.addAll(Arrays.asList(children));
}
else if (outputRoot.isFile()) {
filesToDelete.add(outputRoot);
}
}
else {
context.processMessage(new CompilerMessage(
@@ -51,7 +51,7 @@ public class ModuleBuildTarget extends ModuleBasedTarget<JavaSourceRootDescripto
@NotNull
@Override
public Collection<File> getOutputDirs(CompileContext context) {
public Collection<File> getOutputRoots(CompileContext context) {
Collection<File> result = new SmartList<File>();
final File outputDir = getOutputDir();
if (outputDir != null) {
@@ -126,8 +126,8 @@ public class ArtifactBuildTarget extends BuildTarget<ArtifactRootDescriptor> {
@NotNull
@Override
public Collection<File> getOutputDirs(CompileContext ccontext) {
String outputPath = myArtifact.getOutputPath();
return outputPath != null && !StringUtil.isEmpty(outputPath) ? Collections.singleton(new File(FileUtil.toSystemDependentName(outputPath))) : Collections.<File>emptyList();
public Collection<File> getOutputRoots(CompileContext context) {
String outputFilePath = myArtifact.getOutputFilePath();
return outputFilePath != null && !StringUtil.isEmpty(outputFilePath) ? Collections.singleton(new File(FileUtil.toSystemDependentName(outputFilePath))) : Collections.<File>emptyList();
}
}
@@ -273,11 +273,27 @@ public class ArtifactBuilderTest extends ArtifactBuilderTestCase {
String file = createFile("d/a.txt");
JpsArtifact a = addArtifact(root().parentDirCopy(file));
buildAll();
new File(a.getOutputPath(), "b.txt").createNewFile();
createFileInArtifactOutput(a, "b.txt");
buildAllAndAssertUpToDate();
assertOutput(a, fs().file("a.txt").file("b.txt"));
rebuildAll();
assertOutput(a, fs().file("a.txt"));
}
public void testDeleteOnlyOutputFileOnRebuildForArchiveArtifact() throws IOException {
String file = createFile("a.txt");
JpsArtifact a = addArtifact(archive("a.jar").fileCopy(file));
buildAll();
createFileInArtifactOutput(a, "b.txt");
buildAllAndAssertUpToDate();
assertOutput(a, fs().archive("a.jar").file("a.txt").end().file("b.txt"));
rebuildAll();
assertOutput(a, fs().archive("a.jar").file("a.txt").end().file("b.txt"));
}
private static void createFileInArtifactOutput(JpsArtifact a, final String fileName) throws IOException {
assertTrue(new File(a.getOutputPath(), fileName).createNewFile());
}
}
@@ -25,7 +25,6 @@ import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.Project;
import com.intellij.ui.AutoScrollToSourceHandler;
import com.intellij.util.PlatformIcons;
import com.intellij.util.xmlb.XmlSerializerUtil;
/**
@@ -150,7 +149,7 @@ public class AnalysisUIOptions implements PersistentStateComponent<AnalysisUIOpt
public AnAction createGroupByDirectoryAction(final InspectionResultsView view) {
return new ToggleAction("Group by directory",
"Group by directory",
PlatformIcons.DIRECTORY_CLOSED_ICON) {
AllIcons.Actions.GroupByPackage) {
@Override
public boolean isSelected(AnActionEvent e) {
@@ -53,6 +53,7 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel
public void setModelAndUpdateColumns(final ListTableModel<Item> model) {
super.setModel(model);
createDefaultColumnsFromModel();
updateColumnSizes();
}
@@ -52,7 +52,6 @@ import com.intellij.ui.SideBorder;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentFactory;
import com.intellij.util.Alarm;
import com.intellij.util.PlatformIcons;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.tree.TreeUtil;
@@ -541,7 +540,7 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro
public ToggleShowFlattenAction() {
super(VcsBundle.message("changes.action.show.directories.text"),
VcsBundle.message("changes.action.show.directories.description"),
PlatformIcons.DIRECTORY_CLOSED_ICON);
AllIcons.Actions.GroupByPackage);
}
public boolean isSelected(AnActionEvent e) {
@@ -15,6 +15,7 @@
*/
package com.intellij.openapi.vcs.changes;
import com.intellij.icons.AllIcons;
import com.intellij.ide.CommonActionsManager;
import com.intellij.ide.TreeExpander;
import com.intellij.ide.util.treeView.TreeState;
@@ -37,7 +38,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.ScrollPaneFactory;
import com.intellij.util.EditSourceOnDoubleClickHandler;
import com.intellij.util.EditSourceOnEnterKeyHandler;
import com.intellij.util.PlatformIcons;
import com.intellij.util.ui.tree.TreeUtil;
import javax.swing.*;
@@ -222,7 +222,7 @@ public class UnversionedViewDialog extends DialogWrapper {
public ToggleShowFlattenAction() {
super(VcsBundle.message("changes.action.show.directories.text"),
VcsBundle.message("changes.action.show.directories.description"),
PlatformIcons.DIRECTORY_CLOSED_ICON);
AllIcons.Actions.GroupByPackage);
myFlattenState = false;
}
@@ -42,7 +42,6 @@ import com.intellij.ui.components.panels.NonOpaquePanel;
import com.intellij.ui.treeStructure.Tree;
import com.intellij.ui.treeStructure.actions.CollapseAllAction;
import com.intellij.ui.treeStructure.actions.ExpandAllAction;
import com.intellij.util.PlatformIcons;
import com.intellij.util.containers.Convertor;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.tree.TreeUtil;
@@ -799,7 +798,7 @@ public abstract class ChangesTreeList<T> extends JPanel implements TypeSafeDataP
public ToggleShowDirectoriesAction() {
super(VcsBundle.message("changes.action.show.directories.text"),
VcsBundle.message("changes.action.show.directories.description"),
PlatformIcons.DIRECTORY_CLOSED_ICON);
AllIcons.Actions.GroupByPackage);
}
public boolean isSelected(AnActionEvent e) {
@@ -88,7 +88,7 @@ public class AndroidBuildTarget extends ModuleBasedTarget<BuildRootDescriptor> {
@NotNull
@Override
public Collection<File> getOutputDirs(CompileContext context) {
public Collection<File> getOutputRoots(CompileContext context) {
return Collections.emptyList();
}
@@ -107,7 +107,7 @@ public class MavenResourcesTarget extends ModuleBasedTarget<MavenResourceRootDes
@NotNull
@Override
public Collection<File> getOutputDirs(CompileContext context) {
public Collection<File> getOutputRoots(CompileContext context) {
final Set<File> result = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
final File moduleOutput = getModuleOutputDir();
for (ResourceRootConfiguration resConfig : getRootConfigurations(context.getProjectDescriptor().dataManager.getDataPaths())) {