Convert KotlinUpdatePluginComponent into a startup activity
Relates to #KT-38407
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
60dc2f9674
commit
4535584f16
@@ -1,9 +1,4 @@
|
|||||||
<idea-plugin>
|
<idea-plugin>
|
||||||
<application-components>
|
|
||||||
<component>
|
|
||||||
<implementation-class>org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent</implementation-class>
|
|
||||||
</component>
|
|
||||||
</application-components>
|
|
||||||
|
|
||||||
<actions>
|
<actions>
|
||||||
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
|
<action id="Kotlin.NewFile" class="org.jetbrains.kotlin.idea.actions.NewKotlinFileAction">
|
||||||
|
|||||||
@@ -78,41 +78,44 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
<declarationSearcher language="kotlin" implementationClass="org.jetbrains.kotlin.idea.jvm.KotlinDeclarationSearcher"/>
|
<declarationSearcher language="kotlin" implementationClass="org.jetbrains.kotlin.idea.jvm.KotlinDeclarationSearcher"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<applicationService serviceImplementation="org.jetbrains.kotlin.idea.PluginStartupService" />
|
<applicationService serviceImplementation="org.jetbrains.kotlin.idea.PluginStartupService" />
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.PluginStartupActivity"/>
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.completion.LookupCancelWatcher"/>
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener"/>
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent"/>
|
|
||||||
|
|
||||||
<projectService serviceImplementation="org.jetbrains.kotlin.idea.completion.LookupCancelService"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.PluginStartupActivity"/>
|
||||||
<projectService serviceImplementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectService"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginStartupActivity" />
|
||||||
|
|
||||||
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.highlighter.KotlinBeforeResolveHighlightingPass$Registrar"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.completion.LookupCancelWatcher"/>
|
||||||
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.highlighter.ScriptExternalHighlightingPass$Registrar"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener"/>
|
||||||
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.parameterInfo.custom.KotlinCodeHintsPass$Registrar"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent"/>
|
||||||
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.refactoring.cutPaste.MoveDeclarationsPassFactory$Registrar"/>
|
|
||||||
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.gradle.target" version="2"/>
|
<projectService serviceImplementation="org.jetbrains.kotlin.idea.completion.LookupCancelService"/>
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.maven.target" version="3"/>
|
<projectService serviceImplementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectService"/>
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.jps.target" version="3"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.gradle.library" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.refactoring" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.newFileTempl" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.npwizards" version="2"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.debugger" version="2"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.j2k" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.editor" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.migrationTool" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.ide.new.wizard" version="1"/>
|
|
||||||
<statistics.counterUsagesCollector groupId="kotlin.gradle.performance" version="1"/>
|
|
||||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.IDESettingsFUSCollector"/>
|
|
||||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.formatter.KotlinFormatterUsageCollector"/>
|
|
||||||
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.ProjectConfigurationCollector"/>
|
|
||||||
|
|
||||||
<fileTypeUsageSchemaDescriptor schema="Gradle Script" implementationClass="org.jetbrains.kotlin.idea.core.script.KotlinGradleScriptFileTypeSchemaDetector"/>
|
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.highlighter.KotlinBeforeResolveHighlightingPass$Registrar"/>
|
||||||
|
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.highlighter.ScriptExternalHighlightingPass$Registrar"/>
|
||||||
|
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.parameterInfo.custom.KotlinCodeHintsPass$Registrar"/>
|
||||||
|
<highlightingPassFactory implementation="org.jetbrains.kotlin.idea.refactoring.cutPaste.MoveDeclarationsPassFactory$Registrar"/>
|
||||||
|
|
||||||
<completion.ml.model implementation="org.jetbrains.kotlin.idea.completion.ml.KotlinMLRankingProvider"/>
|
<statistics.counterUsagesCollector groupId="kotlin.gradle.target" version="2"/>
|
||||||
<completion.ml.contextFeatures language="kotlin" implementationClass="org.jetbrains.kotlin.idea.completion.ml.KotlinContextFeatureProvider"/>
|
<statistics.counterUsagesCollector groupId="kotlin.maven.target" version="3"/>
|
||||||
</extensions>
|
<statistics.counterUsagesCollector groupId="kotlin.jps.target" version="3"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.gradle.library" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.refactoring" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.newFileTempl" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.npwizards" version="2"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.debugger" version="2"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.j2k" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.editor" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.migrationTool" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.ide.new.wizard" version="1"/>
|
||||||
|
<statistics.counterUsagesCollector groupId="kotlin.gradle.performance" version="1"/>
|
||||||
|
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.IDESettingsFUSCollector"/>
|
||||||
|
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.formatter.KotlinFormatterUsageCollector"/>
|
||||||
|
<statistics.projectUsagesCollector implementation="org.jetbrains.kotlin.idea.statistics.ProjectConfigurationCollector"/>
|
||||||
|
|
||||||
|
<fileTypeUsageSchemaDescriptor schema="Gradle Script" implementationClass="org.jetbrains.kotlin.idea.core.script.KotlinGradleScriptFileTypeSchemaDetector"/>
|
||||||
|
|
||||||
|
<completion.ml.model implementation="org.jetbrains.kotlin.idea.completion.ml.KotlinMLRankingProvider"/>
|
||||||
|
<completion.ml.contextFeatures language="kotlin" implementationClass="org.jetbrains.kotlin.idea.completion.ml.KotlinContextFeatureProvider"/>
|
||||||
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||
@@ -58,6 +58,12 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
|
|
||||||
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
|
||||||
|
<application-components>
|
||||||
|
<component>
|
||||||
|
<implementation-class>org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent</implementation-class>
|
||||||
|
</component>
|
||||||
|
</application-components>
|
||||||
|
|
||||||
<project-components>
|
<project-components>
|
||||||
<component>
|
<component>
|
||||||
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
||||||
|
|||||||
@@ -58,6 +58,12 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
|
|
||||||
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
|
||||||
|
<application-components>
|
||||||
|
<component>
|
||||||
|
<implementation-class>org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent</implementation-class>
|
||||||
|
</component>
|
||||||
|
</application-components>
|
||||||
|
|
||||||
<project-components>
|
<project-components>
|
||||||
<component>
|
<component>
|
||||||
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
||||||
|
|||||||
@@ -74,7 +74,10 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<applicationService serviceImplementation="org.jetbrains.kotlin.idea.PluginStartupService" />
|
<applicationService serviceImplementation="org.jetbrains.kotlin.idea.PluginStartupService" />
|
||||||
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.PluginStartupActivity"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.PluginStartupActivity"/>
|
||||||
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginStartupActivity" />
|
||||||
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.completion.LookupCancelWatcher"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.completion.LookupCancelWatcher"/>
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener"/>
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent"/>
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
|
|
||||||
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
|
||||||
|
<application-components>
|
||||||
|
<component>
|
||||||
|
<implementation-class>org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent</implementation-class>
|
||||||
|
</component>
|
||||||
|
</application-components>
|
||||||
|
|
||||||
<project-components>
|
<project-components>
|
||||||
<component>
|
<component>
|
||||||
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
|
|
||||||
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
<xi:include href="scripting-support.xml" xpointer="xpointer(/idea-plugin/*)"/>
|
||||||
|
|
||||||
|
<application-components>
|
||||||
|
<component>
|
||||||
|
<implementation-class>org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent</implementation-class>
|
||||||
|
</component>
|
||||||
|
</application-components>
|
||||||
|
|
||||||
<project-components>
|
<project-components>
|
||||||
<component>
|
<component>
|
||||||
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
<implementation-class>org.jetbrains.kotlin.idea.completion.LookupCancelWatcher</implementation-class>
|
||||||
|
|||||||
@@ -79,7 +79,10 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
|
|||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<applicationService serviceImplementation="org.jetbrains.kotlin.idea.PluginStartupService" />
|
<applicationService serviceImplementation="org.jetbrains.kotlin.idea.PluginStartupService" />
|
||||||
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.PluginStartupActivity"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.PluginStartupActivity"/>
|
||||||
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginStartupActivity" />
|
||||||
|
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.completion.LookupCancelWatcher"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.completion.LookupCancelWatcher"/>
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener"/>
|
||||||
<postStartupActivity implementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent"/>
|
<postStartupActivity implementation="org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent"/>
|
||||||
|
|||||||
@@ -17,47 +17,41 @@
|
|||||||
package org.jetbrains.kotlin.idea.versions
|
package org.jetbrains.kotlin.idea.versions
|
||||||
|
|
||||||
import com.intellij.ide.util.PropertiesComponent
|
import com.intellij.ide.util.PropertiesComponent
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.components.BaseComponent
|
import com.intellij.openapi.startup.StartupActivity
|
||||||
import com.intellij.openapi.vfs.JarFileSystem
|
import com.intellij.openapi.vfs.JarFileSystem
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem
|
import com.intellij.openapi.vfs.LocalFileSystem
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.openapi.vfs.VirtualFileVisitor
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
import com.intellij.openapi.vfs.newvfs.NewVirtualFile
|
import com.intellij.openapi.vfs.newvfs.NewVirtualFile
|
||||||
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.isUnitTestMode
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
private val INSTALLED_KOTLIN_VERSION = "installed.kotlin.plugin.version"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component forces update for built-in libraries in plugin directory. They are ignored because of
|
* Component forces update for built-in libraries in plugin directory. They are ignored because of
|
||||||
* com.intellij.util.indexing.FileBasedIndex.isUnderConfigOrSystem()
|
* com.intellij.util.indexing.FileBasedIndex.isUnderConfigOrSystem()
|
||||||
*/
|
*/
|
||||||
class KotlinUpdatePluginComponent : BaseComponent {
|
// BUNCH: 192
|
||||||
override fun initComponent() {
|
class KotlinUpdatePluginStartupActivity : StartupActivity {
|
||||||
if (ApplicationManager.getApplication()?.isUnitTestMode == true) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val installedKotlinVersion = PropertiesComponent.getInstance()?.getValue(INSTALLED_KOTLIN_VERSION)
|
override fun runActivity(project: Project) {
|
||||||
|
if (isUnitTestMode()) return
|
||||||
|
|
||||||
if (installedKotlinVersion == null || KotlinPluginUtil.getPluginVersion() != installedKotlinVersion) {
|
val propertiesComponent = PropertiesComponent.getInstance() ?: return
|
||||||
|
|
||||||
|
val installedKotlinVersion = propertiesComponent.getValue(INSTALLED_KOTLIN_VERSION)
|
||||||
|
|
||||||
|
if (KotlinPluginUtil.getPluginVersion() != installedKotlinVersion) {
|
||||||
// Force refresh jar handlers
|
// Force refresh jar handlers
|
||||||
for (libraryJarDescriptor in LibraryJarDescriptor.values()) {
|
for (libraryJarDescriptor in LibraryJarDescriptor.values()) {
|
||||||
requestFullJarUpdate(libraryJarDescriptor.getPathInPlugin())
|
requestFullJarUpdate(libraryJarDescriptor.getPathInPlugin())
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertiesComponent.getInstance()?.setValue(INSTALLED_KOTLIN_VERSION, KotlinPluginUtil.getPluginVersion())
|
propertiesComponent.setValue(INSTALLED_KOTLIN_VERSION, KotlinPluginUtil.getPluginVersion())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getComponentName(): String {
|
|
||||||
return "ReindexBundledRuntimeComponent"
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun disposeComponent() {
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun requestFullJarUpdate(jarFilePath: File) {
|
private fun requestFullJarUpdate(jarFilePath: File) {
|
||||||
val localVirtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(jarFilePath) ?: return
|
val localVirtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(jarFilePath) ?: return
|
||||||
|
|
||||||
@@ -66,4 +60,8 @@ class KotlinUpdatePluginComponent : BaseComponent {
|
|||||||
VfsUtilCore.visitChildrenRecursively(jarFile, object : VirtualFileVisitor<Any?>() {})
|
VfsUtilCore.visitChildrenRecursively(jarFile, object : VirtualFileVisitor<Any?>() {})
|
||||||
((jarFile as NewVirtualFile)).markDirtyRecursively()
|
((jarFile as NewVirtualFile)).markDirtyRecursively()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val INSTALLED_KOTLIN_VERSION = "installed.kotlin.plugin.version"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 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.versions
|
||||||
|
|
||||||
|
import com.intellij.ide.util.PropertiesComponent
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
|
import com.intellij.openapi.components.BaseComponent
|
||||||
|
import com.intellij.openapi.vfs.JarFileSystem
|
||||||
|
import com.intellij.openapi.vfs.LocalFileSystem
|
||||||
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
|
import com.intellij.openapi.vfs.newvfs.NewVirtualFile
|
||||||
|
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
private val INSTALLED_KOTLIN_VERSION = "installed.kotlin.plugin.version"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Component forces update for built-in libraries in plugin directory. They are ignored because of
|
||||||
|
* com.intellij.util.indexing.FileBasedIndex.isUnderConfigOrSystem()
|
||||||
|
*/
|
||||||
|
// BUNCH: 192
|
||||||
|
class KotlinUpdatePluginComponent : BaseComponent {
|
||||||
|
override fun initComponent() {
|
||||||
|
if (ApplicationManager.getApplication()?.isUnitTestMode == true) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val installedKotlinVersion = PropertiesComponent.getInstance()?.getValue(INSTALLED_KOTLIN_VERSION)
|
||||||
|
|
||||||
|
if (installedKotlinVersion == null || KotlinPluginUtil.getPluginVersion() != installedKotlinVersion) {
|
||||||
|
// Force refresh jar handlers
|
||||||
|
for (libraryJarDescriptor in LibraryJarDescriptor.values()) {
|
||||||
|
requestFullJarUpdate(libraryJarDescriptor.getPathInPlugin())
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertiesComponent.getInstance()?.setValue(INSTALLED_KOTLIN_VERSION, KotlinPluginUtil.getPluginVersion())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getComponentName(): String {
|
||||||
|
return "ReindexBundledRuntimeComponent"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun disposeComponent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun requestFullJarUpdate(jarFilePath: File) {
|
||||||
|
val localVirtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(jarFilePath) ?: return
|
||||||
|
|
||||||
|
// Build and update JarHandler
|
||||||
|
val jarFile = JarFileSystem.getInstance().getJarRootForLocalFile(localVirtualFile) ?: return
|
||||||
|
VfsUtilCore.visitChildrenRecursively(jarFile, object : VirtualFileVisitor<Any?>() {})
|
||||||
|
((jarFile as NewVirtualFile)).markDirtyRecursively()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user