diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewModuleNode.java b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewModuleNode.java index 35a2b0f8d2f8..76901883e56d 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewModuleNode.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageViewModuleNode.java @@ -27,6 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.List; public class PackageViewModuleNode extends AbstractModuleNode{ @@ -38,10 +39,12 @@ public class PackageViewModuleNode extends AbstractModuleNode{ @NotNull public Collection getChildren() { return AbstractTreeUi.calculateYieldingToWriteAction(() -> { - List roots = Arrays.asList(ModuleRootManager.getInstance(getValue()).getSourceRoots()); - final Collection result = PackageUtil.createPackageViewChildrenOnFiles(roots, myProject, getSettings(), getValue(), false); + Module module = getValue(); + if (module == null || module.isDisposed()) return Collections.emptyList(); + List roots = Arrays.asList(ModuleRootManager.getInstance(module).getSourceRoots()); + final Collection result = PackageUtil.createPackageViewChildrenOnFiles(roots, myProject, getSettings(), module, false); if (getSettings().isShowLibraryContents()) { - result.add(new PackageViewLibrariesNode(getProject(), getValue(),getSettings())); + result.add(new PackageViewLibrariesNode(getProject(), module, getSettings())); } return result; }); diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java index 8fd774b09e31..212ef2cec4b1 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java @@ -601,7 +601,7 @@ public abstract class AbstractProjectViewPane implements DataProvider, Disposabl protected PsiDirectory[] getSelectedDirectoriesInAmbiguousCase(Object userObject) { if (userObject instanceof AbstractModuleNode) { final Module module = ((AbstractModuleNode)userObject).getValue(); - if (module != null) { + if (module != null && !module.isDisposed()) { final ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module); final VirtualFile[] sourceRoots = moduleRootManager.getSourceRoots(); List dirs = new ArrayList<>(sourceRoots.length); diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/AbstractModuleNode.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/AbstractModuleNode.java index c3467924a4b3..69d8526d8493 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/AbstractModuleNode.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/AbstractModuleNode.java @@ -66,7 +66,9 @@ public abstract class AbstractModuleNode extends ProjectViewNode impleme @Override public Collection getRoots() { Module module = getValue(); - return module != null ? Arrays.asList(ModuleRootManager.getInstance(module).getContentRoots()) : Collections.emptyList(); + return module != null && !module.isDisposed() + ? Arrays.asList(ModuleRootManager.getInstance(module).getContentRoots()) + : Collections.emptyList(); } @Override @@ -90,7 +92,7 @@ public abstract class AbstractModuleNode extends ProjectViewNode impleme @Override public void navigate(final boolean requestFocus) { Module module = getValue(); - if (module != null) { + if (module != null && !module.isDisposed()) { ProjectSettingsService.getInstance(myProject).openModuleSettings(module); } } @@ -102,7 +104,8 @@ public abstract class AbstractModuleNode extends ProjectViewNode impleme @Override public boolean canNavigate() { - return ProjectSettingsService.getInstance(myProject).canOpenModuleSettings() && getValue() != null; + Module module = getValue(); + return module != null && !module.isDisposed() && ProjectSettingsService.getInstance(myProject).canOpenModuleSettings(); } @SuppressWarnings("deprecation") diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/StructureViewModuleNode.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/StructureViewModuleNode.java index a569de360486..aa993cecf76b 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/StructureViewModuleNode.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/StructureViewModuleNode.java @@ -37,7 +37,7 @@ public class StructureViewModuleNode extends AbstractModuleNode { @NotNull public Collection getChildren() { final Module module = getValue(); - if (module == null) { + if (module == null || module.isDisposed()) { // just deleted a module from project view return Collections.emptyList(); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java index 15070804c7e0..80bf6a6fd986 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcFramework.java @@ -171,7 +171,7 @@ public abstract class MvcFramework { @Nullable public VirtualFile findAppRoot(@Nullable Module module) { - if (module == null) return null; + if (module == null || module.isDisposed()) return null; String appDirName = getApplicationDirectoryName();