mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[Gradle|Exec] cleanup: remove the ProjectResolverContext#getConnection function
The Gradle connection can be redefined during the Gradle sync. Therefore, the API cannot guarantee that connection is open in any sync moment. Issues IDEA-363359, IDEA-344664 GitOrigin-RevId: bb42168971d564bb3fe427fa13d9b1f70782cb44
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5ab82d7d23
commit
b7efc9b41c
+8
-5
@@ -27,6 +27,7 @@ import org.jetbrains.plugins.gradle.statistics.GradleSyncCollector
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
class GradleModelFetchActionRunner private constructor(
|
||||
private val connection: ProjectConnection,
|
||||
private val resolverContext: DefaultProjectResolverContext,
|
||||
private val modelFetchAction: GradleModelFetchAction,
|
||||
private val modelFetchActionListener: GradleModelFetchActionListener,
|
||||
@@ -60,7 +61,7 @@ class GradleModelFetchActionRunner private constructor(
|
||||
private fun notifyConnectionAboutChangedPaths() {
|
||||
ApplicationManager.getApplication()
|
||||
.getService(GradleFileModificationTracker::class.java)
|
||||
.notifyConnectionAboutChangedPaths(resolverContext.connection)
|
||||
.notifyConnectionAboutChangedPaths(connection)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,7 +69,7 @@ class GradleModelFetchActionRunner private constructor(
|
||||
*/
|
||||
private fun runPhasedBuildAction(resultHandler: GradleModelFetchActionResultHandlerBridge) {
|
||||
modelFetchAction.isUseProjectsLoadedPhase = true
|
||||
resolverContext.connection.action()
|
||||
connection.action()
|
||||
.projectsLoaded(modelFetchAction, resultHandler.asProjectLoadedResultHandler())
|
||||
.buildFinished(modelFetchAction, resultHandler.asBuildFinishedResultHandler())
|
||||
.build()
|
||||
@@ -79,7 +80,7 @@ class GradleModelFetchActionRunner private constructor(
|
||||
}
|
||||
|
||||
private fun runDefaultBuildAction(resultHandler: GradleModelFetchActionResultHandlerBridge) {
|
||||
resolverContext.connection.action(modelFetchAction)
|
||||
connection.action(modelFetchAction)
|
||||
.prepareOperationForSync()
|
||||
.withStreamedValueListener(resultHandler.asStreamValueListener())
|
||||
.run(resultHandler.asResultHandler())
|
||||
@@ -108,15 +109,17 @@ class GradleModelFetchActionRunner private constructor(
|
||||
companion object {
|
||||
|
||||
private fun runBuildAction(
|
||||
connection: ProjectConnection,
|
||||
resolverContext: DefaultProjectResolverContext,
|
||||
modelFetchAction: GradleModelFetchAction,
|
||||
modelFetchActionListener: GradleModelFetchActionListener,
|
||||
) {
|
||||
GradleModelFetchActionRunner(resolverContext, modelFetchAction, modelFetchActionListener).runBuildAction()
|
||||
GradleModelFetchActionRunner(connection, resolverContext, modelFetchAction, modelFetchActionListener).runBuildAction()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun runAndTraceBuildAction(
|
||||
connection: ProjectConnection,
|
||||
resolverContext: DefaultProjectResolverContext,
|
||||
modelFetchAction: GradleModelFetchAction,
|
||||
modelFetchActionListener: GradleModelFetchActionListener,
|
||||
@@ -133,7 +136,7 @@ class GradleModelFetchActionRunner private constructor(
|
||||
collector.logModelFetchFailure(exception)
|
||||
}
|
||||
}
|
||||
runBuildAction(resolverContext, modelFetchAction, modelFetchActionListenerWithTrace)
|
||||
runBuildAction(connection, resolverContext, modelFetchAction, modelFetchActionListenerWithTrace)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-13
@@ -18,7 +18,6 @@ import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.util.containers.CollectionFactory;
|
||||
import org.gradle.tooling.CancellationToken;
|
||||
import org.gradle.tooling.CancellationTokenSource;
|
||||
import org.gradle.tooling.ProjectConnection;
|
||||
import org.gradle.tooling.model.BuildIdentifier;
|
||||
import org.gradle.tooling.model.BuildModel;
|
||||
import org.gradle.tooling.model.ProjectModel;
|
||||
@@ -47,7 +46,6 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements
|
||||
@NotNull private final GradleExecutionSettings mySettings;
|
||||
@NotNull private final ExternalSystemTaskNotificationListener myListener;
|
||||
@NotNull private final GradleProjectResolverIndicator myProjectResolverIndicator;
|
||||
private ProjectConnection myConnection;
|
||||
@Nullable private GradleIdeaModelHolder myModels;
|
||||
private File myGradleUserHome;
|
||||
@Nullable private String myProjectGradleVersion;
|
||||
@@ -75,7 +73,6 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements
|
||||
myExternalSystemTaskId = externalSystemTaskId;
|
||||
myProjectPath = projectPath;
|
||||
mySettings = settings;
|
||||
myConnection = null;
|
||||
myListener = listener;
|
||||
myPolicy = resolverPolicy;
|
||||
myProjectResolverIndicator = projectResolverIndicator;
|
||||
@@ -123,16 +120,6 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements
|
||||
return mySettings;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ProjectConnection getConnection() {
|
||||
return myConnection;
|
||||
}
|
||||
|
||||
public void setConnection(@NotNull ProjectConnection connection) {
|
||||
myConnection = connection;
|
||||
}
|
||||
|
||||
public @NotNull ProgressIndicator getProgressIndicator() {
|
||||
return myProjectResolverIndicator;
|
||||
}
|
||||
|
||||
+2
-2
@@ -198,8 +198,8 @@ public final class GradleBuildSrcProjectsResolver {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildSrcProjectDataNode = GradleProjectResolver.executeProjectResolverTask(buildSrcResolverCtx, myResolverChain, () ->
|
||||
myProjectResolver.doResolveProjectInfo(buildSrcResolverCtx, myResolverChain)
|
||||
var buildSrcProjectDataNode = GradleProjectResolver.executeProjectResolverTask(buildSrcResolverCtx, myResolverChain, connection ->
|
||||
myProjectResolver.doResolveProjectInfo(connection, buildSrcResolverCtx, myResolverChain)
|
||||
);
|
||||
|
||||
if (buildSrcProjectDataNode == null) return;
|
||||
|
||||
+12
-13
@@ -75,6 +75,7 @@ import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Stream;
|
||||
@@ -177,8 +178,8 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
|
||||
var projectResolverChain = createProjectResolverChain(resolverContext);
|
||||
|
||||
var projectDataNode = executeProjectResolverTask(resolverContext, projectResolverChain, () ->
|
||||
doResolveProjectInfo(resolverContext, projectResolverChain)
|
||||
var projectDataNode = executeProjectResolverTask(resolverContext, projectResolverChain, connection ->
|
||||
doResolveProjectInfo(connection, resolverContext, projectResolverChain)
|
||||
);
|
||||
|
||||
// auto-discover buildSrc projects of the main and included builds
|
||||
@@ -219,7 +220,7 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
protected static <R> R executeProjectResolverTask(
|
||||
@NotNull DefaultProjectResolverContext resolverContext,
|
||||
@NotNull GradleProjectResolverExtension projectResolverChain,
|
||||
@NotNull Supplier<R> task
|
||||
@NotNull Function<ProjectConnection, R> task
|
||||
) {
|
||||
var projectPath = resolverContext.getProjectPath();
|
||||
var id = resolverContext.getExternalSystemTaskId();
|
||||
@@ -230,8 +231,7 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
|
||||
return GradleExecutionHelper.execute(projectPath, settings, id, listener, cancellationToken, connection -> {
|
||||
try {
|
||||
resolverContext.setConnection(connection);
|
||||
return task.get();
|
||||
return task.apply(connection);
|
||||
}
|
||||
catch (ProcessCanceledException e) {
|
||||
throw e;
|
||||
@@ -251,15 +251,14 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
});
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private DataNode<ProjectData> doResolveProjectInfo(
|
||||
@NotNull final DefaultProjectResolverContext resolverContext,
|
||||
@NotNull final GradleProjectResolverExtension projectResolverChain
|
||||
)
|
||||
throws IllegalArgumentException, IllegalStateException {
|
||||
protected @NotNull DataNode<ProjectData> doResolveProjectInfo(
|
||||
@NotNull ProjectConnection connection,
|
||||
@NotNull DefaultProjectResolverContext resolverContext,
|
||||
@NotNull GradleProjectResolverExtension projectResolverChain
|
||||
) throws IllegalArgumentException, IllegalStateException {
|
||||
|
||||
final BuildEnvironment buildEnvironment = GradleExecutionHelper.getBuildEnvironment(
|
||||
resolverContext.getConnection(),
|
||||
connection,
|
||||
resolverContext.getExternalSystemTaskId(),
|
||||
resolverContext.getListener(),
|
||||
resolverContext.getCancellationToken(),
|
||||
@@ -332,7 +331,7 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver<Grad
|
||||
.startSpan();
|
||||
try (Scope ignore = gradleCallSpan.makeCurrent()) {
|
||||
var modelFetchActionResultHandler = new GradleModelFetchActionResultHandler(resolverContext);
|
||||
GradleModelFetchActionRunner.runAndTraceBuildAction(resolverContext, buildAction, modelFetchActionResultHandler);
|
||||
GradleModelFetchActionRunner.runAndTraceBuildAction(connection, resolverContext, buildAction, modelFetchActionResultHandler);
|
||||
|
||||
var gradleVersion = ObjectUtils.doIfNotNull(resolverContext.getProjectGradleVersion(), it -> GradleVersion.version(it));
|
||||
if (gradleVersion != null && GradleJvmSupportMatrix.isGradleDeprecatedByIdea(gradleVersion)) {
|
||||
|
||||
-4
@@ -7,7 +7,6 @@ import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId;
|
||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener;
|
||||
import com.intellij.openapi.util.UserDataHolderEx;
|
||||
import org.gradle.tooling.CancellationToken;
|
||||
import org.gradle.tooling.ProjectConnection;
|
||||
import org.gradle.tooling.model.BuildIdentifier;
|
||||
import org.gradle.tooling.model.BuildModel;
|
||||
import org.gradle.tooling.model.ProjectModel;
|
||||
@@ -37,9 +36,6 @@ public interface ProjectResolverContext extends UserDataHolderEx {
|
||||
@NotNull
|
||||
GradleExecutionSettings getSettings();
|
||||
|
||||
@NotNull
|
||||
ProjectConnection getConnection();
|
||||
|
||||
@NotNull
|
||||
CancellationToken getCancellationToken();
|
||||
|
||||
|
||||
-1
@@ -107,7 +107,6 @@ abstract class GradleProjectResolverTestCase {
|
||||
override fun getIdeProjectPath() = throw UnsupportedOperationException()
|
||||
override fun getProjectPath() = throw UnsupportedOperationException()
|
||||
override fun getSettings() = throw UnsupportedOperationException()
|
||||
override fun getConnection() = throw UnsupportedOperationException()
|
||||
override fun getCancellationToken() = throw UnsupportedOperationException()
|
||||
override fun getListener() = throw UnsupportedOperationException()
|
||||
override fun isPhasedSyncEnabled() = throw UnsupportedOperationException()
|
||||
|
||||
Reference in New Issue
Block a user