Fix memory leakage via Library in KotlinMavenImporter
Relates to #KT-38407
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
4908d7a78c
commit
d2a26e9049
@@ -13,7 +13,7 @@ import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsPr
|
|||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.roots.*
|
import com.intellij.openapi.roots.*
|
||||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||||
import com.intellij.openapi.roots.libraries.Library
|
import com.intellij.openapi.util.Disposer
|
||||||
import com.intellij.util.PathUtil
|
import com.intellij.util.PathUtil
|
||||||
import org.jdom.Element
|
import org.jdom.Element
|
||||||
import org.jdom.Text
|
import org.jdom.Text
|
||||||
@@ -119,14 +119,18 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
|
|||||||
val artifacts = mavenProject.dependencyArtifactIndex.data[KOTLIN_PLUGIN_GROUP_ID]?.values?.flatMap { it.filter { it.isResolved } }
|
val artifacts = mavenProject.dependencyArtifactIndex.data[KOTLIN_PLUGIN_GROUP_ID]?.values?.flatMap { it.filter { it.isResolved } }
|
||||||
?: emptyList()
|
?: emptyList()
|
||||||
|
|
||||||
val librariesWithNoSources = ArrayList<Library>()
|
val libraryNames = mutableSetOf<String?>()
|
||||||
OrderEnumerator.orderEntries(module).forEachLibrary { library ->
|
OrderEnumerator.orderEntries(module).forEachLibrary { library ->
|
||||||
if (library.modifiableModel.getFiles(OrderRootType.SOURCES).isEmpty()) {
|
val model = library.modifiableModel
|
||||||
librariesWithNoSources.add(library)
|
try {
|
||||||
|
if (model.getFiles(OrderRootType.SOURCES).isEmpty()) {
|
||||||
|
libraryNames.add(library.name)
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
Disposer.dispose(model)
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
val libraryNames = librariesWithNoSources.mapTo(HashSet()) { it.name }
|
|
||||||
val toBeDownloaded = artifacts.filter { it.libraryName in libraryNames }
|
val toBeDownloaded = artifacts.filter { it.libraryName in libraryNames }
|
||||||
|
|
||||||
if (toBeDownloaded.isNotEmpty()) {
|
if (toBeDownloaded.isNotEmpty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user