mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
root model: don't create synthetic entries for excluded output folders - 2
This commit is contained in:
+10
-18
@@ -19,8 +19,6 @@ import com.intellij.openapi.roots.CompilerModuleExtension;
|
||||
import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.ExcludeFolder;
|
||||
import com.intellij.openapi.roots.SourceFolder;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -55,7 +53,7 @@ public abstract class JavaContentEntryEditor extends ContentEntryEditor {
|
||||
|
||||
@Override
|
||||
protected ExcludeFolder doAddExcludeFolder(@NotNull final VirtualFile file) {
|
||||
final boolean isCompilerOutput = isCompilerOutput(file);
|
||||
final boolean isCompilerOutput = isCompilerOutput(file.getUrl());
|
||||
if (isCompilerOutput) {
|
||||
myCompilerExtension.setExcludeOutput(true);
|
||||
return null;
|
||||
@@ -64,32 +62,26 @@ public abstract class JavaContentEntryEditor extends ContentEntryEditor {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doRemoveExcludeFolder(@NotNull final ExcludeFolder excludeFolder) {
|
||||
final VirtualFile file = excludeFolder.getFile();
|
||||
if (file != null) {
|
||||
if (isCompilerOutput(file)) {
|
||||
myCompilerExtension.setExcludeOutput(false);
|
||||
}
|
||||
protected void doRemoveExcludeFolder(@NotNull final String excludeRootUrl) {
|
||||
if (isCompilerOutput(excludeRootUrl)) {
|
||||
myCompilerExtension.setExcludeOutput(false);
|
||||
}
|
||||
super.doRemoveExcludeFolder(excludeFolder);
|
||||
super.doRemoveExcludeFolder(excludeRootUrl);
|
||||
}
|
||||
|
||||
private boolean isCompilerOutput(@NotNull final VirtualFile file) {
|
||||
final VirtualFile compilerOutputPath = myCompilerExtension.getCompilerOutputPath();
|
||||
if (file.equals(compilerOutputPath)) {
|
||||
private boolean isCompilerOutput(@NotNull final String fileUrl) {
|
||||
if (fileUrl.equals(myCompilerExtension.getCompilerOutputUrl())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
final VirtualFile compilerOutputPathForTests = myCompilerExtension.getCompilerOutputPathForTests();
|
||||
if (file.equals(compilerOutputPathForTests)) {
|
||||
if (fileUrl.equals(myCompilerExtension.getCompilerOutputUrlForTests())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
final String path = file.getPath();
|
||||
if (myCompilerExtension.isCompilerOutputPathInherited()) {
|
||||
final ProjectStructureConfigurable instance = ProjectStructureConfigurable.getInstance(getModel().getModule().getProject());
|
||||
final String compilerOutput = VfsUtil.urlToPath(instance.getProjectConfig().getCompilerOutputUrl());
|
||||
if (FileUtil.pathsEqual(compilerOutput, path)) {
|
||||
final String compilerOutputUrl = instance.getProjectConfig().getCompilerOutputUrl();
|
||||
if (fileUrl.equals(compilerOutputUrl)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.pointers.VirtualFilePointer;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -78,14 +79,12 @@ public class ExcludeCompilerOutputPolicy implements DirectoryIndexExcludePolicy
|
||||
return VirtualFilePointer.EMPTY_ARRAY;
|
||||
}
|
||||
if (extension.isCompilerOutputPathInherited()) {
|
||||
result.add(CompilerProjectExtension.getInstance(myProject).getCompilerOutputPointer());
|
||||
ContainerUtil.addIfNotNull(result, CompilerProjectExtension.getInstance(myProject).getCompilerOutputPointer());
|
||||
}
|
||||
else {
|
||||
if (!extension.isExcludeOutput()) return VirtualFilePointer.EMPTY_ARRAY;
|
||||
final VirtualFilePointer outputPath = extension.getCompilerOutputPointer();
|
||||
if (outputPath != null) result.add(outputPath);
|
||||
final VirtualFilePointer outputPathForTests = extension.getCompilerOutputForTestsPointer();
|
||||
if (outputPathForTests != null) result.add(outputPathForTests);
|
||||
ContainerUtil.addIfNotNull(result, extension.getCompilerOutputPointer());
|
||||
ContainerUtil.addIfNotNull(result, extension.getCompilerOutputForTestsPointer());
|
||||
}
|
||||
return result.isEmpty() ? VirtualFilePointer.EMPTY_ARRAY : result.toArray(new VirtualFilePointer[result.size()]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user