Skip to content

Commit 3b19be1

Browse files
committed
fix: use plugin disposable instead of project
Signed-off-by: Fred Bricon <[email protected]>
1 parent 4c5ed29 commit 3b19be1

File tree

9 files changed

+47
-48
lines changed

9 files changed

+47
-48
lines changed

src/main/java/com/redhat/devtools/intellij/lsp4mp4ij/classpath/ClasspathResourceChangedManager.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.intellij.psi.PsiManager;
2626
import com.intellij.util.messages.MessageBusConnection;
2727
import com.intellij.util.messages.Topic;
28+
import com.redhat.devtools.intellij.quarkus.QuarkusPluginDisposable;
2829
import org.jetbrains.annotations.NotNull;
2930

3031
import java.util.Set;
@@ -35,7 +36,7 @@
3536
*
3637
* <code>
3738
* ClasspathResourceChangeManager.Listener myListener = ...
38-
* project.getMessageBus().connect(project).subscribe(ClasspathResourceChangeManager.TOPIC, myListener);
39+
* project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project)).subscribe(ClasspathResourceChangeManager.TOPIC, myListener);
3940
* </code>
4041
*
4142
*
@@ -72,15 +73,15 @@ public ClasspathResourceChangedManager(Project project) {
7273
// Send source files changed in debounce mode
7374
this.resourceChangedNotifier = new ClasspathResourceChangedNotifier(project);
7475
listener = new ClasspathResourceChangedListener(this);
75-
projectConnection = project.getMessageBus().connect();
76+
projectConnection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
7677
// Track end of Java libraries update
7778
LibraryTablesRegistrar.getInstance().getLibraryTable(project).addListener(listener);
7879
// Track update of Psi Java, properties files
7980
PsiManager.getInstance(project).addPsiTreeChangeListener(listener, project);
8081
// Track modules changes
8182
projectConnection.subscribe(ProjectTopics.MODULES, listener);
8283
// Track delete, create, update of file
83-
appConnection = ApplicationManager.getApplication().getMessageBus().connect(project);
84+
appConnection = ApplicationManager.getApplication().getMessageBus().connect(QuarkusPluginDisposable.getInstance());
8485
appConnection.subscribe(VirtualFileManager.VFS_CHANGES, listener);
8586
}
8687

src/main/java/com/redhat/devtools/intellij/lsp4mp4ij/psi/core/project/PsiMicroProfileProjectManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.intellij.openapi.vfs.VirtualFile;
2121
import com.intellij.util.messages.MessageBusConnection;
2222
import com.redhat.devtools.intellij.lsp4mp4ij.classpath.ClasspathResourceChangedManager;
23+
import com.redhat.devtools.intellij.quarkus.QuarkusPluginDisposable;
2324
import org.jetbrains.annotations.NotNull;
2425

2526
import java.util.Set;
@@ -84,7 +85,7 @@ private void evict(Module javaProject) {
8485
private PsiMicroProfileProjectManager(Project project) {
8586
this.project = project;
8687
microprofileProjectListener = new MicroProfileProjectListener();
87-
connection = project.getMessageBus().connect(project);
88+
connection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
8889
connection.subscribe(ClasspathResourceChangedManager.TOPIC, microprofileProjectListener);
8990
connection.subscribe(ProjectTopics.MODULES, microprofileProjectListener);
9091
}

src/main/java/com/redhat/devtools/intellij/quarkus/QuarkusDeploymentSupport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public static QuarkusDeploymentSupport getInstance(@NotNull Project project) {
6464

6565
public QuarkusDeploymentSupport(Project project) {
6666
this.project = project;
67-
connection = project.getMessageBus().connect(project);
67+
connection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
6868
connection.subscribe(ClasspathResourceChangedManager.TOPIC, this);
6969
}
7070

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2+
package com.redhat.devtools.intellij.quarkus;
3+
4+
import com.intellij.openapi.Disposable;
5+
import com.intellij.openapi.application.ApplicationManager;
6+
import com.intellij.openapi.components.Service;
7+
import com.intellij.openapi.project.Project;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
/**
11+
* The service is intended to be used instead of a project/application as a parent disposable.
12+
*
13+
* copied from https://github.com/JetBrains/intellij-community/blob/idea/241.14494.240/python/openapi/src/com/jetbrains/python/PythonPluginDisposable.java
14+
*/
15+
@Service({Service.Level.APP, Service.Level.PROJECT})
16+
public final class QuarkusPluginDisposable implements Disposable {
17+
public static @NotNull Disposable getInstance() {
18+
return ApplicationManager.getApplication().getService(QuarkusPluginDisposable.class);
19+
}
20+
21+
public static @NotNull Disposable getInstance(@NotNull Project project) {
22+
return project.getService(QuarkusPluginDisposable.class);
23+
}
24+
25+
@Override
26+
public void dispose() {
27+
}
28+
}

src/main/java/com/redhat/devtools/intellij/quarkus/QuarkusProjectService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public static QuarkusProjectService getInstance(@NotNull Project project) {
5252
private final MessageBusConnection connection;
5353

5454
public QuarkusProjectService(Project project) {
55-
connection = project.getMessageBus().connect();
55+
connection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
5656
connection.subscribe(ClasspathResourceChangedManager.TOPIC, this);
5757
}
5858

src/main/java/com/redhat/devtools/intellij/quarkus/lsp/QuarkusLanguageClient.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.intellij.openapi.progress.ProgressIndicator;
1818
import com.intellij.openapi.progress.Task;
1919
import com.intellij.openapi.project.Project;
20+
import com.intellij.openapi.util.Disposer;
2021
import com.intellij.openapi.util.Pair;
2122
import com.intellij.openapi.vfs.VirtualFile;
2223
import com.intellij.profile.ProfileChangeAdapter;
@@ -32,6 +33,7 @@
3233
import com.redhat.devtools.intellij.lsp4mp4ij.settings.UserDefinedMicroProfileSettings;
3334
import com.redhat.devtools.intellij.quarkus.QuarkusDeploymentSupport;
3435
import com.redhat.devtools.intellij.quarkus.QuarkusModuleUtil;
36+
import com.redhat.devtools.intellij.quarkus.QuarkusPluginDisposable;
3537
import com.redhat.devtools.lsp4ij.JSONUtils;
3638
import com.redhat.devtools.lsp4ij.client.CoalesceByKey;
3739
import com.redhat.devtools.lsp4ij.client.IndexAwareLanguageClient;
@@ -59,10 +61,11 @@ public class QuarkusLanguageClient extends IndexAwareLanguageClient implements M
5961

6062
public QuarkusLanguageClient(Project project) {
6163
super(project);
62-
// Call Quarkus deployment support here to react on library changed (to evict quarkus deploiement cache) before
64+
// Call Quarkus deployment support here to react on library changed (to evict quarkus deployment cache) before
6365
// sending an LSP microprofile/propertiesChanged notifications
66+
Disposer.register(QuarkusPluginDisposable.getInstance(project), this);
6467
QuarkusDeploymentSupport.getInstance(project);
65-
connection = project.getMessageBus().connect(project);
68+
connection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
6669
connection.subscribe(ClasspathResourceChangedManager.TOPIC, this);
6770
inspectionsInfo = MicroProfileInspectionsInfo.getMicroProfileInspectionInfo(project);
6871
connection.subscribe(ProfileChangeAdapter.TOPIC, this);

src/main/java/com/redhat/devtools/intellij/quarkus/run/QuarkusRunConfigurationManager.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@
1717
import com.intellij.execution.RunnerAndConfigurationSettings;
1818
import com.intellij.execution.dashboard.RunDashboardManager;
1919
import com.intellij.openapi.Disposable;
20-
import com.intellij.openapi.application.ReadAction;
2120
import com.intellij.openapi.module.Module;
2221
import com.intellij.openapi.project.Project;
23-
import com.intellij.util.concurrency.NonUrgentExecutor;
2422
import com.intellij.util.messages.MessageBusConnection;
2523
import com.redhat.devtools.intellij.quarkus.QuarkusModuleUtil;
24+
import com.redhat.devtools.intellij.quarkus.QuarkusPluginDisposable;
2625
import com.redhat.devtools.intellij.quarkus.buildtool.BuildToolDelegate;
2726
import com.redhat.devtools.intellij.quarkus.buildtool.ProjectImportListener;
2827
import com.redhat.devtools.intellij.quarkus.settings.UserDefinedQuarkusSettings;
@@ -92,7 +91,7 @@ public QuarkusRunConfigurationManager(Project project) {
9291

9392
@NotNull
9493
private MessageBusConnection addProjectImportListener(Project project) {
95-
MessageBusConnection connection = project.getMessageBus().connect();
94+
MessageBusConnection connection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
9695
ProjectImportListener listener = new ProjectImportListener() {
9796

9897
@Override

src/main/java/com/redhat/devtools/intellij/qute/lsp/QuteLanguageClient.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
import com.intellij.openapi.progress.ProgressIndicator;
1818
import com.intellij.openapi.progress.Task;
1919
import com.intellij.openapi.project.Project;
20+
import com.intellij.openapi.util.Disposer;
2021
import com.intellij.openapi.util.Pair;
2122
import com.intellij.openapi.vfs.VirtualFile;
2223
import com.intellij.profile.ProfileChangeAdapter;
2324
import com.intellij.util.messages.MessageBusConnection;
25+
import com.redhat.devtools.intellij.quarkus.QuarkusPluginDisposable;
2426
import com.redhat.devtools.lsp4ij.client.CoalesceByKey;
2527
import com.redhat.devtools.lsp4ij.client.IndexAwareLanguageClient;
2628
import com.redhat.devtools.intellij.lsp4mp4ij.classpath.ClasspathResourceChangedManager;
@@ -54,7 +56,8 @@ public class QuteLanguageClient extends IndexAwareLanguageClient implements Qute
5456

5557
public QuteLanguageClient(Project project) {
5658
super(project);
57-
connection = project.getMessageBus().connect(project);
59+
Disposer.register(QuarkusPluginDisposable.getInstance(project), this);
60+
connection = project.getMessageBus().connect(QuarkusPluginDisposable.getInstance(project));
5861
connection.subscribe(ClasspathResourceChangedManager.TOPIC, this);
5962
inspectionsInfo = QuteInspectionsInfo.getQuteInspectionsInfo(project);
6063
connection.subscribe(ProfileChangeAdapter.TOPIC, this);

src/main/resources/messages/LanguageServerBundle.properties

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)