IDEA-385627: gradle: fix memory leak via quickfix

`OpenInspectionSettingsFix` held the entire `GradleExecutionContext`

^IDEA-385627 Fixed

GitOrigin-RevId: 45750fb74a72a8dcf341e3ad03db0c18298ec717
This commit is contained in:
Dmitrii Gridin
2026-02-05 21:09:30 +00:00
committed by intellij-monorepo-bot
parent fdbeb15b4a
commit c0a421aa98
2 changed files with 13 additions and 19 deletions
@@ -23,13 +23,14 @@ internal class OutdatedGradleVersionChecker: GradleExecutionChecker {
if (isLatestMinorVersionInspectionDisabled(context)) return
if (isMinorGradleVersionOutdated(currentVersion)) return
val issue = OutdatedGradleVersionIssue(context, currentVersion)
issue.addOpenInspectionSettingsQuickFix(context, "LatestMinorVersion")
val issue = OutdatedGradleVersionIssue(context.projectPath, currentVersion)
issue.addOpenInspectionSettingsQuickFix("LatestMinorVersion")
val taskId = context.taskId
context.listener.onStatusChange(
ExternalSystemBuildEvent(
context.taskId,
BuildIssueEventImpl(context.taskId, issue, MessageEvent.Kind.INFO)
taskId,
BuildIssueEventImpl(taskId, issue, MessageEvent.Kind.INFO)
)
)
}
@@ -16,7 +16,6 @@ import org.gradle.util.GradleVersion
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.plugins.gradle.issue.ConfigurableGradleBuildIssue
import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix
import org.jetbrains.plugins.gradle.service.execution.GradleExecutionContext
import org.jetbrains.plugins.gradle.util.GradleBundle
import org.jetbrains.plugins.gradle.util.GradleUtil
import java.nio.file.Path
@@ -24,12 +23,12 @@ import java.util.concurrent.CompletableFuture
@ApiStatus.Internal
class OutdatedGradleVersionIssue(
context: GradleExecutionContext,
projectPath: String,
private val currentVersion: GradleVersion,
) : ConfigurableGradleBuildIssue() {
init {
val latestVersion = GradleJvmSupportMatrix.Companion.getLatestMinorGradleVersion(currentVersion.majorVersion)
val latestVersion = GradleJvmSupportMatrix.getLatestMinorGradleVersion(currentVersion.majorVersion)
setTitle(GradleBundle.message("gradle.build.issue.gradle.outdated.minor.version.title"))
addDescription(
GradleBundle.message(
@@ -42,7 +41,7 @@ class OutdatedGradleVersionIssue(
latestVersion.version
))
addGradleVersionQuickFix(context.projectPath, latestVersion)
addGradleVersionQuickFix(projectPath, latestVersion)
}
/**
@@ -71,11 +70,8 @@ class OutdatedGradleVersionIssue(
}
}
fun addOpenInspectionSettingsQuickFix(
context: GradleExecutionContext,
inspectionShortName: String,
) {
val hyperlinkReference = addQuickFix(OpenInspectionSettingsFix(context, inspectionShortName))
fun addOpenInspectionSettingsQuickFix(inspectionShortName: String) {
val hyperlinkReference = addQuickFix(OpenInspectionSettingsFix(inspectionShortName))
addQuickFixPrompt(
GradleBundle.message(
"gradle.build.quick.fix.edit.inspection.settings",
@@ -83,16 +79,13 @@ class OutdatedGradleVersionIssue(
))
}
private class OpenInspectionSettingsFix(
private val context: GradleExecutionContext,
private val inspectionShortName: String,
) : BuildIssueQuickFix {
private class OpenInspectionSettingsFix(private val inspectionShortName: String) : BuildIssueQuickFix {
override val id = "open_inspection_settings"
override fun runQuickFix(project: Project, dataContext: DataContext): CompletableFuture<*> {
val projectProfileManager = InspectionProjectProfileManager.getInstance(context.project)
val projectProfileManager = InspectionProjectProfileManager.getInstance(project)
val inspectionProfile = projectProfileManager.getCurrentProfile()
EditInspectionToolsSettingsAction.editToolSettings(context.project, inspectionProfile, inspectionShortName)
EditInspectionToolsSettingsAction.editToolSettings(project, inspectionProfile, inspectionShortName)
return CompletableFuture.completedFuture(null)
}
}