diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/buildActionRunner/GradleBuildActionResultHandler.kt b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/buildActionRunner/GradleBuildActionResultHandler.kt index 60706fe8bd71..c63a31ab29bb 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/buildActionRunner/GradleBuildActionResultHandler.kt +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/buildActionRunner/GradleBuildActionResultHandler.kt @@ -62,7 +62,7 @@ class GradleBuildActionResultHandler( onProjectLoaded(state) } catch (e: ProcessCanceledException) { - resolverCtx.cancellationTokenSource.cancel() + resolverCtx.cancel() } } } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleExecutionHelper.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleExecutionHelper.java index b057cbe76305..442b018045f3 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleExecutionHelper.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/GradleExecutionHelper.java @@ -116,7 +116,7 @@ public class GradleExecutionHelper { @Nullable GradleExecutionSettings settings, @Nullable ExternalSystemTaskId taskId, @Nullable ExternalSystemTaskNotificationListener listener, - @Nullable CancellationTokenSource cancellationTokenSource, + @Nullable CancellationToken cancellationToken, @NotNull Function f) { String projectDir; File projectPathFile = new File(projectPath); @@ -132,7 +132,6 @@ public class GradleExecutionHelper { else { projectDir = projectPath; } - CancellationToken cancellationToken = cancellationTokenSource != null ? cancellationTokenSource.token() : null; return withGradleConnection( projectDir, taskId, settings, listener, cancellationToken, connection -> { @@ -326,15 +325,14 @@ public class GradleExecutionHelper { return () -> FileUtil.loadFileOrNull(fileWithPathToProperties); } - @Nullable - public static BuildEnvironment getBuildEnvironment(ProjectResolverContext projectResolverContext) { - CancellationTokenSource cancellationTokenSource = projectResolverContext.getCancellationTokenSource(); - CancellationToken cancellationToken = cancellationTokenSource != null ? cancellationTokenSource.token() : null; - return getBuildEnvironment(projectResolverContext.getConnection(), - projectResolverContext.getExternalSystemTaskId(), - projectResolverContext.getListener(), - cancellationToken, - projectResolverContext.getSettings()); + public static @Nullable BuildEnvironment getBuildEnvironment(@NotNull ProjectResolverContext projectResolverContext) { + return getBuildEnvironment( + projectResolverContext.getConnection(), + projectResolverContext.getExternalSystemTaskId(), + projectResolverContext.getListener(), + projectResolverContext.getCancellationTokenSource().token(), + projectResolverContext.getSettings() + ); } public static void prepare( @@ -763,30 +761,6 @@ public class GradleExecutionHelper { } } - @Nullable - public static GradleVersion getGradleVersion(@NotNull ProjectConnection connection, - @NotNull ExternalSystemTaskId taskId, - @NotNull ExternalSystemTaskNotificationListener listener, - @Nullable CancellationTokenSource cancellationTokenSource) { - final BuildEnvironment buildEnvironment = getBuildEnvironment(connection, taskId, listener, cancellationTokenSource, null); - - GradleVersion gradleVersion = null; - if (buildEnvironment != null) { - gradleVersion = GradleVersion.version(buildEnvironment.getGradle().getGradleVersion()); - } - return gradleVersion; - } - - @Nullable - public static BuildEnvironment getBuildEnvironment(@NotNull ProjectConnection connection, - @NotNull ExternalSystemTaskId taskId, - @NotNull ExternalSystemTaskNotificationListener listener, - @Nullable CancellationTokenSource cancellationTokenSource, - @Nullable GradleExecutionSettings settings) { - CancellationToken cancellationToken = cancellationTokenSource != null ? cancellationTokenSource.token() : null; - return getBuildEnvironment(connection, taskId, listener, cancellationToken, settings); - } - private static @Nullable BuildEnvironment getBuildEnvironment( @NotNull ProjectConnection connection, @NotNull ExternalSystemTaskId taskId, diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/UnsupportedCancellationToken.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/UnsupportedCancellationToken.java deleted file mode 100644 index 02656fde3951..000000000000 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/execution/UnsupportedCancellationToken.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2000-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.plugins.gradle.service.execution; - -import com.intellij.openapi.externalSystem.service.execution.NotSupportedException; -import org.gradle.tooling.CancellationToken; -import org.gradle.tooling.CancellationTokenSource; - -/** - * @author Vladislav.Soroka - */ -public class UnsupportedCancellationToken implements CancellationTokenSource { - @Override - public void cancel() { - throw new NotSupportedException("Configured version of Gradle does not support cancellation. \nPlease, use Gradle 2.1 or newer."); - } - - @Override - public CancellationToken token() { - return null; - } -} diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/DefaultProjectResolverContext.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/DefaultProjectResolverContext.java index b175c17597b2..3b4064e1dcf6 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/DefaultProjectResolverContext.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/DefaultProjectResolverContext.java @@ -102,6 +102,23 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements return myCancellationTokenSource; } + @Override + public boolean isCancellationRequested() { + return myCancellationTokenSource.token().isCancellationRequested(); + } + + @Override + public void cancel() { + myCancellationTokenSource.cancel(); + } + + @Override + public void checkCancelled() { + if (isCancellationRequested()) { + throw new ProcessCanceledException(); + } + } + @NotNull @Override public ExternalSystemTaskNotificationListener getListener() { @@ -175,13 +192,6 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements return getModels().hasModulesWithModel(modelClass); } - @Override - public void checkCancelled() { - if (myCancellationTokenSource.token().isCancellationRequested()) { - throw new ProcessCanceledException(); - } - } - @Override public String getProjectGradleVersion() { if (myProjectGradleVersion == null) { diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java index 1fc11b56b0ed..b225146829c5 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolver.java @@ -39,6 +39,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import org.gradle.api.ProjectConfigurationException; import org.gradle.tooling.BuildActionFailureException; +import org.gradle.tooling.CancellationToken; import org.gradle.tooling.CancellationTokenSource; import org.gradle.tooling.ProjectConnection; import org.gradle.tooling.model.ProjectModel; @@ -137,7 +138,8 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver extensionsFilter = gradleResolverPolicy != null ? gradleResolverPolicy.getExtensionsFilter() : null; final GradleProjectResolverExtension projectResolverChain = createProjectResolverChain(resolverContext, extensionsFilter); final DataNode projectDataNode = myHelper.execute( - projectPath, settings, syncTaskId, listener, cancellationTokenSource, + projectPath, settings, syncTaskId, listener, cancellationToken, getProjectDataFunction(resolverContext, projectResolverChain, false)); // auto-discover buildSrc projects of the main and included builds diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/ProjectResolverContext.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/ProjectResolverContext.java index 0c4252e2b774..a3c0c28315a8 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/ProjectResolverContext.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/ProjectResolverContext.java @@ -40,9 +40,15 @@ public interface ProjectResolverContext extends UserDataHolderEx { @NotNull ProjectConnection getConnection(); - @Nullable + @NotNull CancellationTokenSource getCancellationTokenSource(); + boolean isCancellationRequested(); + + void cancel(); + + void checkCancelled() throws ProcessCanceledException; + @NotNull ExternalSystemTaskNotificationListener getListener(); @@ -96,8 +102,6 @@ public interface ProjectResolverContext extends UserDataHolderEx { boolean hasModulesWithModel(@NotNull Class modelClass); - void checkCancelled() throws ProcessCanceledException; - @Nullable String getProjectGradleVersion(); diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/task/GradleTaskManager.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/task/GradleTaskManager.java index d5dc289f7fd8..62041a0ebc71 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/task/GradleTaskManager.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/task/GradleTaskManager.java @@ -104,15 +104,15 @@ public class GradleTaskManager implements ExternalSystemTaskManager { - executeTasks(id, tasks, projectPath, effectiveSettings, jvmParametersSetup, listener, connection, cancellationTokenSource); + myHelper.execute(projectPath, effectiveSettings, id, listener, cancellationToken, connection -> { + executeTasks(id, tasks, projectPath, effectiveSettings, jvmParametersSetup, listener, connection, cancellationToken); return null; }); } @@ -128,10 +128,10 @@ public class GradleTaskManager implements ExternalSystemTaskManager ext.onSuccess(id, projectPath)); diff --git a/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/scripting/importing/KotlinDslScriptModelProcessor.kt b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/scripting/importing/KotlinDslScriptModelProcessor.kt index fcdfeeba4402..5ae4c5ea7b34 100644 --- a/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/scripting/importing/KotlinDslScriptModelProcessor.kt +++ b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/scripting/importing/KotlinDslScriptModelProcessor.kt @@ -3,18 +3,16 @@ package org.jetbrains.kotlin.idea.gradleJava.scripting.importing import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId -import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.project.Project import com.intellij.openapi.util.NlsSafe import com.intellij.openapi.util.io.FileUtil.toSystemIndependentName import com.intellij.openapi.vfs.VfsUtil import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel -import org.jetbrains.kotlin.idea.gradleTooling.BrokenKotlinDslScriptsModel -import org.jetbrains.kotlin.idea.gradle.KotlinIdeaGradleBundle -import org.jetbrains.kotlin.idea.gradle.scripting.importing.* +import org.jetbrains.kotlin.idea.gradle.scripting.importing.LOG import org.jetbrains.kotlin.idea.gradleJava.scripting.getGradleScriptInputsStamp import org.jetbrains.kotlin.idea.gradleJava.scripting.roots.GradleBuildRootsManager +import org.jetbrains.kotlin.idea.gradleTooling.BrokenKotlinDslScriptsModel import org.jetbrains.plugins.gradle.model.GradleBuildScriptClasspathModel import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext import java.io.File @@ -71,11 +69,7 @@ fun processScriptModel( it.failed = true } } - resolverCtx.cancellationTokenSource?.cancel() ?: throw ProcessCanceledException( - IllegalStateException(KotlinIdeaGradleBundle.message("title.kotlin.build.script") - + ":\n" - + errors.joinToString("\n") { it.text + "\n" + it.details }) - ) + resolverCtx.cancel() } errors.isEmpty() }