Skip to content

Commit 83a18f7

Browse files
fix AlreadyDisposedException
1 parent 15ca0f6 commit 83a18f7

File tree

6 files changed

+19
-2
lines changed

6 files changed

+19
-2
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-facet/src/main/java/com/microsoft/azure/toolkit/intellij/facet/projectexplorer/AbstractAzureFacetNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ public void updateChildren() {
101101
}
102102

103103
private void rerender(boolean updateStructure) { // `static` to make it available for AzureFacetRootNode
104+
if (this.getProject().isDisposed()) {
105+
Disposer.dispose(this);
106+
return;
107+
}
104108
final AbstractProjectViewPane pane = ProjectView.getInstance(this.getProject()).getCurrentProjectViewPane();
105109
final AsyncTreeModel model = (AsyncTreeModel) pane.getTree().getModel();
106110
final DefaultMutableTreeNode node = TreeUtil.findNodeWithObject((DefaultMutableTreeNode) model.getRoot(), this);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-facet/src/main/java/com/microsoft/azure/toolkit/intellij/facet/projectexplorer/AbstractProjectNode.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ public void updateChildren() {
100100
}
101101

102102
private void rerender(boolean updateStructure) { // `static` to make it available for AzureFacetRootNode
103+
if (this.getProject().isDisposed()) {
104+
Disposer.dispose(this);
105+
return;
106+
}
103107
final AbstractProjectViewPane pane = ProjectView.getInstance(this.getProject()).getCurrentProjectViewPane();
104108
final AsyncTreeModel model = (AsyncTreeModel) pane.getTree().getModel();
105109
final DefaultMutableTreeNode node = TreeUtil.findNodeWithObject((DefaultMutableTreeNode) model.getRoot(), this);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-facet/src/main/java/com/microsoft/azure/toolkit/intellij/facet/projectexplorer/AzureFacetTreeStructureProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public AzureFacetTreeStructureProvider(Project project) {
5858
@Override
5959
@Nonnull
6060
public Collection<AbstractTreeNode<?>> modify(@Nonnull AbstractTreeNode<?> parent, @Nonnull Collection<AbstractTreeNode<?>> children, ViewSettings settings) {
61-
if (!(parent instanceof PsiDirectoryNode)) {
61+
if (!(parent instanceof PsiDirectoryNode) || this.myProject.isDisposed()) {
6262
return children;
6363
}
6464
try {
@@ -192,6 +192,9 @@ private void updatePopupMenuActions(final IAzureFacetNode node) {
192192
}
193193

194194
private void addListener(@Nonnull final Project project) {
195+
if (project.isDisposed()) {
196+
return;
197+
}
195198
final AbstractProjectViewPane currentProjectViewPane = ProjectView.getInstance(project).getCurrentProjectViewPane();
196199
final JTree tree = currentProjectViewPane.getTree();
197200
final boolean exists = Arrays.stream(tree.getMouseListeners()).anyMatch(listener -> listener instanceof AzureProjectExplorerMouseListener);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-resource-connector-lib/src/main/java/com/microsoft/azure/toolkit/intellij/connector/ResourceConnectionActionsContributor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ public void registerActions(AzureActionManager am) {
7979
.withLabel("Hide 'Azure' Node")
8080
.withIcon(AzureIcons.Common.HIDE.getIconPath())
8181
.withHandler((module, e) -> {
82+
if(module.getProject().isDisposed()){
83+
return;
84+
}
8285
final PropertiesComponent properties = PropertiesComponent.getInstance(module.getProject());
8386
properties.setValue(module.getModule().getName() + ".azure", "hide");
8487
ProjectView.getInstance(module.getProject()).getCurrentProjectViewPane().updateFromRoot(true);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-resource-connector-lib/src/main/java/com/microsoft/azure/toolkit/intellij/facet/AzureFacet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public Path getDotAzurePath() {
3838
}
3939

4040
public static void addTo(@Nonnull final Module module) {
41+
if (module.isDisposed() || module.getProject().isDisposed()) {
42+
return;
43+
}
4144
final AzureFacet facet = getInstance(module);
4245
final PropertiesComponent properties = PropertiesComponent.getInstance(module.getProject());
4346
final String key = getFacetFlag(module);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-resource-connector-lib/src/main/java/com/microsoft/azure/toolkit/intellij/facet/ToggleAzureFacetNodeAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class ToggleAzureFacetNodeAction extends AnAction {
3131
public void actionPerformed(@Nonnull AnActionEvent event) {
3232
OperationContext.current().setTelemetryProperty(PLACE, StringUtils.firstNonBlank(event.getPlace(), EMPTY_PLACE));
3333
final Module module = LangDataKeys.MODULE.getData(event.getDataContext());
34-
if (Objects.nonNull(module)) {
34+
if (Objects.nonNull(module) && !module.getProject().isDisposed()) {
3535
final Project project = Objects.requireNonNull(event.getProject());
3636
final PropertiesComponent properties = PropertiesComponent.getInstance(project);
3737
properties.setValue(module.getName() + ".azure", "show");

0 commit comments

Comments
 (0)