From 670e016d34b39fb4ffc3dba33fd18382c33b3430 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Mon, 3 Feb 2020 15:50:34 +0100 Subject: [PATCH] PluginStartupComponent reworked into startup activity and service As BaseComponent is deprecated in a platform #KT-35918 Comment --- .../KotlinBuildProcessParametersProvider.kt | 4 +- idea/resources/META-INF/plugin-common.xml | 7 +-- ...ponent.java => PluginStartupActivity.java} | 55 +++--------------- .../kotlin/idea/PluginStartupService.java | 56 +++++++++++++++++++ .../KotlinCompilerConfigurableTab.java | 4 +- .../ui/KotlinExtractFunctionDialog.java | 3 +- 6 files changed, 72 insertions(+), 57 deletions(-) rename idea/src/org/jetbrains/kotlin/idea/{PluginStartupComponent.java => PluginStartupActivity.java} (70%) create mode 100644 idea/src/org/jetbrains/kotlin/idea/PluginStartupService.java diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt index e3954f77d31..a82bcf99755 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinBuildProcessParametersProvider.kt @@ -9,7 +9,7 @@ import com.intellij.compiler.server.BuildProcessParametersProvider import com.intellij.openapi.project.Project import com.intellij.openapi.util.registry.Registry import org.jetbrains.kotlin.config.IncrementalCompilation -import org.jetbrains.kotlin.idea.PluginStartupComponent +import org.jetbrains.kotlin.idea.PluginStartupService class KotlinBuildProcessParametersProvider(private val project: Project) : BuildProcessParametersProvider() { override fun getVMArguments(): MutableList { @@ -28,7 +28,7 @@ class KotlinBuildProcessParametersProvider(private val project: Project) : Build if (Registry.`is`("kotlin.jps.instrument.bytecode", false)) { res.add("-Dkotlin.jps.instrument.bytecode=true") } - PluginStartupComponent.getInstance().aliveFlagPath.let { + PluginStartupService.getInstance().aliveFlagPath.let { if (!it.isBlank()) { // TODO: consider taking the property name from compiler/daemon/common (check whether dependency will be not too heavy) res.add("-Dkotlin.daemon.client.alive.path=\"$it\"") diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml index 3b3ae2a2de9..d90e7248458 100644 --- a/idea/resources/META-INF/plugin-common.xml +++ b/idea/resources/META-INF/plugin-common.xml @@ -35,10 +35,6 @@ - - org.jetbrains.kotlin.idea.PluginStartupComponent - - org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent @@ -233,6 +229,9 @@ + + + diff --git a/idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java b/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.java similarity index 70% rename from idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java rename to idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.java index 1f51bfad486..229aed70a4f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/PluginStartupComponent.java +++ b/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2020 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,13 +18,14 @@ package org.jetbrains.kotlin.idea; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathMacros; -import com.intellij.openapi.components.BaseComponent; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.editor.event.DocumentListener; import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.startup.StartupActivity; import com.intellij.openapi.updateSettings.impl.UpdateChecker; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.searches.IndexPatternSearch; @@ -33,28 +34,15 @@ import org.jetbrains.kotlin.idea.reporter.KotlinReportSubmitter; import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinTodoSearcher; import org.jetbrains.kotlin.utils.PathUtil; -import java.io.File; -import java.io.IOException; - import static org.jetbrains.kotlin.idea.TestResourceBundleKt.registerAdditionalResourceBundleInTests; -public class PluginStartupComponent implements BaseComponent { - private static final Logger LOG = Logger.getInstance(PluginStartupComponent.class); +public class PluginStartupActivity implements StartupActivity.DumbAware { + private static final Logger LOG = Logger.getInstance(PluginStartupActivity.class); private static final String KOTLIN_BUNDLED = "KOTLIN_BUNDLED"; - public static PluginStartupComponent getInstance() { - return ApplicationManager.getApplication().getComponent(PluginStartupComponent.class); - } - @Override - @NotNull - public String getComponentName() { - return PluginStartupComponent.class.getName(); - } - - @Override - public void initComponent() { + public void runActivity(@NotNull Project project) { if (ApplicationManager.getApplication().isUnitTestMode()) { registerAdditionalResourceBundleInTests(); } @@ -77,7 +65,7 @@ public class PluginStartupComponent implements BaseComponent { KotlinPluginUpdater.Companion.getInstance().kotlinFileEdited(virtualFile); } } - }); + }, project); ServiceManager.getService(IndexPatternSearch.class).registerExecutor(new KotlinTodoSearcher()); @@ -94,33 +82,4 @@ public class PluginStartupComponent implements BaseComponent { macros.setMacro(KOTLIN_BUNDLED, PathUtil.getKotlinPathsForIdeaPlugin().getHomePath().getPath()); } - private String aliveFlagPath; - - public synchronized String getAliveFlagPath() { - if (this.aliveFlagPath == null) { - try { - File flagFile = File.createTempFile("kotlin-idea-", "-is-running"); - flagFile.deleteOnExit(); - this.aliveFlagPath = flagFile.getAbsolutePath(); - } - catch (IOException e) { - this.aliveFlagPath = ""; - } - } - return this.aliveFlagPath; - } - - public synchronized void resetAliveFlag() { - if (this.aliveFlagPath != null) { - File flagFile = new File(this.aliveFlagPath); - if (flagFile.exists()) { - if (flagFile.delete()) { - this.aliveFlagPath = null; - } - } - } - } - - @Override - public void disposeComponent() {} } diff --git a/idea/src/org/jetbrains/kotlin/idea/PluginStartupService.java b/idea/src/org/jetbrains/kotlin/idea/PluginStartupService.java new file mode 100644 index 00000000000..f118fd80304 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/PluginStartupService.java @@ -0,0 +1,56 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea; + +import com.intellij.openapi.application.ApplicationManager; + +import java.io.File; +import java.io.IOException; + +public class PluginStartupService { + + public static PluginStartupService getInstance() { + return ApplicationManager.getApplication().getService(PluginStartupService.class); + } + + private String aliveFlagPath; + + public synchronized String getAliveFlagPath() { + if (this.aliveFlagPath == null) { + try { + File flagFile = File.createTempFile("kotlin-idea-", "-is-running"); + flagFile.deleteOnExit(); + this.aliveFlagPath = flagFile.getAbsolutePath(); + } + catch (IOException e) { + this.aliveFlagPath = ""; + } + } + return this.aliveFlagPath; + } + + public synchronized void resetAliveFlag() { + if (this.aliveFlagPath != null) { + File flagFile = new File(this.aliveFlagPath); + if (flagFile.exists()) { + if (flagFile.delete()) { + this.aliveFlagPath = null; + } + } + } + } +} diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index cf9ade58e29..01223f1d1bd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -34,7 +34,7 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments; import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants; import org.jetbrains.kotlin.config.*; import org.jetbrains.kotlin.idea.KotlinBundle; -import org.jetbrains.kotlin.idea.PluginStartupComponent; +import org.jetbrains.kotlin.idea.PluginStartupService; import org.jetbrains.kotlin.idea.facet.DescriptionListCellRenderer; import org.jetbrains.kotlin.idea.facet.KotlinFacet; import org.jetbrains.kotlin.idea.project.NewInferenceForIDEAnalysisComponent; @@ -557,7 +557,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { boolean oldEnableDaemon = compilerWorkspaceSettings.getEnableDaemon(); compilerWorkspaceSettings.setEnableDaemon(keepAliveCheckBox.isSelected()); if (keepAliveCheckBox.isSelected() != oldEnableDaemon) { - PluginStartupComponent.getInstance().resetAliveFlag(); + PluginStartupService.getInstance().resetAliveFlag(); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java index 3784a7e209c..7231b41692b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ui/KotlinExtractFunctionDialog.java @@ -44,6 +44,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -281,7 +282,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper { @NotNull List newParameterInfos, @Nullable KotlinType returnType ) { - Map oldToNewParameters = ContainerUtil.newLinkedHashMap(); + Map oldToNewParameters = new LinkedHashMap<>(); for (ExtractFunctionParameterTablePanel.ParameterInfo parameterInfo : newParameterInfos) { oldToNewParameters.put(parameterInfo.getOriginalParameter(), parameterInfo.toParameter()); }