diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/KotlinModuleTypeManager.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/KotlinModuleTypeManager.java index 9a53ab8b4ec..ed9b211a9e1 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/KotlinModuleTypeManager.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/KotlinModuleTypeManager.java @@ -26,7 +26,5 @@ public abstract class KotlinModuleTypeManager { } public abstract boolean isAndroidGradleModule(@NotNull Module module); - public boolean isGradleModule(@NotNull Module module) { - return ModuleTypeCacheManager.getInstance(module.getProject()).isGradleModule(module); - } + public abstract boolean isGradleModule(@NotNull Module module); } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/ModuleTypeCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/ModuleTypeCache.kt deleted file mode 100644 index b2f6d532eb5..00000000000 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/configuration/ModuleTypeCache.kt +++ /dev/null @@ -1,105 +0,0 @@ -/* - * 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.configuration - -import com.intellij.openapi.module.Module -import com.intellij.openapi.components.ServiceManager -import com.intellij.openapi.project.Project -import com.intellij.openapi.vfs.VirtualFileManager -import com.intellij.psi.util.CachedValueProvider -import com.intellij.psi.util.CachedValuesManager -import com.intellij.openapi.vfs.impl.BulkVirtualFileListenerAdapter -import com.intellij.openapi.vfs.VirtualFileAdapter -import com.intellij.openapi.vfs.VirtualFileEvent -import com.intellij.openapi.vfs.VirtualFileMoveEvent -import com.intellij.openapi.vfs.VirtualFileCopyEvent -import com.intellij.openapi.vfs.VirtualFilePropertyEvent -import com.intellij.openapi.util.SimpleModificationTracker - -class ModuleTypeCacheManager private constructor(project: Project) { - companion object { - @JvmStatic - fun getInstance(project: Project) = ServiceManager.getService(project, ModuleTypeCacheManager::class.java) - } - - private val vfsModificationTracker = VfsModificationTracker(project) - - private val cachedValue = CachedValuesManager.getManager(project).createParameterizedCachedValue( - { - module: Module? -> - val moduleType = if (module != null) computeType(module) else null - CachedValueProvider.Result.create(moduleType, vfsModificationTracker) - }, false) - - fun isGradleModule(module: Module) = getModuleType(module) == ModuleType.GRADLE - - private fun getModuleType(module: Module): ModuleType? { - return cachedValue.getValue(module) - } - - private class VfsModificationTracker(project: Project): SimpleModificationTracker() { - init { - val connection = project.messageBus.connect(); - connection.subscribe(VirtualFileManager.VFS_CHANGES, BulkVirtualFileListenerAdapter( - object : VirtualFileAdapter() { - override fun propertyChanged(event: VirtualFilePropertyEvent) { - incModificationCount() - } - - override fun fileCreated(event: VirtualFileEvent) { - incModificationCount() - } - - override fun fileDeleted(event: VirtualFileEvent) { - incModificationCount() - } - - override fun fileMoved(event: VirtualFileMoveEvent) { - incModificationCount() - } - - override fun fileCopied(event: VirtualFileCopyEvent) { - incModificationCount() - } - } - )) - } - } -} - -enum class ModuleType { - GRADLE, - OTHER -} - -private fun computeType(module: Module) = - when { - isGradleModule(module) -> ModuleType.GRADLE - else -> ModuleType.OTHER - } - -private val DEFAULT_SCRIPT_NAME = "build.gradle" - -private fun isGradleModule(module: Module): Boolean { - val moduleFile = module.moduleFile - if (moduleFile == null){ - return false - } - - val buildFile = moduleFile.parent?.findChild(DEFAULT_SCRIPT_NAME) - return buildFile != null && buildFile.exists() -} diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 6e18b3a11d4..fbc2abcf52e 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -233,9 +233,6 @@ - - diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinModuleTypeManagerImpl.java b/idea/src/org/jetbrains/kotlin/idea/KotlinModuleTypeManagerImpl.java index 3b38f9eadef..11358b983f3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinModuleTypeManagerImpl.java +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinModuleTypeManagerImpl.java @@ -18,6 +18,8 @@ package org.jetbrains.kotlin.idea; import com.intellij.facet.Facet; import com.intellij.facet.FacetManager; +import com.intellij.openapi.externalSystem.model.ProjectSystemId; +import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil; import com.intellij.openapi.module.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.configuration.KotlinModuleTypeManager; @@ -36,4 +38,9 @@ public class KotlinModuleTypeManagerImpl extends KotlinModuleTypeManager { } return false; } + + @Override + public boolean isGradleModule(@NotNull Module module) { + return ExternalSystemApiUtil.isExternalSystemAwareModule(new ProjectSystemId("GRADLE"), module); + } }