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 fcee4ba8d998..69644e6aefc9 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 @@ -51,22 +51,37 @@ import java.util.*; import static org.jetbrains.plugins.gradle.GradleConnectorService.withGradleConnection; -public class GradleExecutionHelper { +public final class GradleExecutionHelper { + + /** + * @deprecated Use helper methods without object instantiation. + * All method is this class is static. + */ + @Deprecated + public GradleExecutionHelper() { } private static final Logger LOG = Logger.getInstance(GradleExecutionHelper.class); - public T execute(@NotNull String projectPath, - @Nullable GradleExecutionSettings settings, - @NotNull Function f) { + /** + * @deprecated Use instead the static variant of this method. + */ + @Deprecated + public T execute( + @NotNull String projectPath, + @Nullable GradleExecutionSettings settings, + @NotNull Function f + ) { return execute(projectPath, settings, null, null, null, f); } - public T execute(@NotNull String projectPath, - @Nullable GradleExecutionSettings settings, - @Nullable ExternalSystemTaskId taskId, - @Nullable ExternalSystemTaskNotificationListener listener, - @Nullable CancellationToken cancellationToken, - @NotNull Function f) { + public static T execute( + @NotNull String projectPath, + @Nullable GradleExecutionSettings settings, + @Nullable ExternalSystemTaskId taskId, + @Nullable ExternalSystemTaskNotificationListener listener, + @Nullable CancellationToken cancellationToken, + @NotNull Function f + ) { String projectDir; File projectPathFile = new File(projectPath); if (projectPathFile.isFile() && projectPath.endsWith(GradleConstants.EXTENSION) && projectPathFile.getParent() != null) { @@ -82,23 +97,21 @@ public class GradleExecutionHelper { else { projectDir = projectPath; } - return withGradleConnection( - projectDir, taskId, settings, listener, cancellationToken, - connection -> { - try { - return SystemPropertiesAdjuster.executeAdjusted(projectDir, () -> f.fun(connection)); - } - catch (ExternalSystemException | ProcessCanceledException e) { - throw e; - } - catch (Throwable e) { - LOG.warn("Gradle execution error", e); - Throwable rootCause = ExceptionUtil.getRootCause(e); - ExternalSystemException externalSystemException = new ExternalSystemException(ExceptionUtil.getMessage(rootCause), e); - externalSystemException.initCause(e); - throw externalSystemException; - } - }); + return withGradleConnection(projectDir, taskId, settings, listener, cancellationToken, connection -> { + try { + return SystemPropertiesAdjuster.executeAdjusted(projectDir, () -> f.fun(connection)); + } + catch (ExternalSystemException | ProcessCanceledException e) { + throw e; + } + catch (Throwable e) { + LOG.warn("Gradle execution error", e); + Throwable rootCause = ExceptionUtil.getRootCause(e); + ExternalSystemException externalSystemException = new ExternalSystemException(ExceptionUtil.getMessage(rootCause), e); + externalSystemException.initCause(e); + throw externalSystemException; + } + }); } @ApiStatus.Internal diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleBuildSrcProjectsResolver.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleBuildSrcProjectsResolver.java index 98190df8d552..ab873b25949c 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleBuildSrcProjectsResolver.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleBuildSrcProjectsResolver.java @@ -19,6 +19,7 @@ import org.jetbrains.plugins.gradle.model.data.BuildParticipant; import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData; import org.jetbrains.plugins.gradle.model.data.CompositeBuildData; import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData; +import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper; import org.jetbrains.plugins.gradle.settings.DistributionType; import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings; import org.jetbrains.plugins.gradle.util.GradleConstants; @@ -203,7 +204,7 @@ public final class GradleBuildSrcProjectsResolver { return; } - final DataNode buildSrcProjectDataNode = myProjectResolver.getHelper().execute( + final DataNode buildSrcProjectDataNode = GradleExecutionHelper.execute( buildSrcResolverCtx.getProjectPath(), buildSrcResolverCtx.getSettings(), buildSrcResolverCtx.getExternalSystemTaskId(), 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 0b14dd59b93a..aa911ae1d553 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 @@ -94,7 +94,6 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver myCancellationMap = MultiMap.createConcurrent(); @@ -109,15 +108,13 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver resolveProjectInfo( @@ -187,7 +184,7 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver projectDataNode = myHelper.execute( + final DataNode projectDataNode = GradleExecutionHelper.execute( resolverContext.getProjectPath(), resolverContext.getSettings(), resolverContext.getExternalSystemTaskId(), @@ -219,11 +216,6 @@ public class GradleProjectResolver implements ExternalSystemProjectResolver INIT_SCRIPT_PREFIX_KEY = Key.create("INIT_SCRIPT_PREFIX_KEY"); public static final Key> VERSION_SPECIFIC_SCRIPTS_KEY = Key.create("VERSION_SPECIFIC_SCRIPTS_KEY"); private static final Logger LOG = Logger.getInstance(GradleTaskManager.class); - private final GradleExecutionHelper myHelper = new GradleExecutionHelper(); private final Map myCancellationMap = new ConcurrentHashMap<>(); @@ -118,7 +117,7 @@ public class GradleTaskManager implements ExternalSystemTaskManager { + GradleExecutionHelper.execute(projectPath, settings, id, listener, cancellationToken, connection -> { executeTasks(projectPath, id, settings, listener, connection, cancellationToken); return null; }); diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleConnectorServiceIntegrationTest.kt b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleConnectorServiceIntegrationTest.kt index 7db70dcaead7..5eeee1830f80 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleConnectorServiceIntegrationTest.kt +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleConnectorServiceIntegrationTest.kt @@ -5,6 +5,7 @@ import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType.EXECUTE_TASK import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import org.assertj.core.api.Assertions.assertThat +import org.gradle.tooling.ProjectConnection import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings import org.junit.Test @@ -37,8 +38,10 @@ class GradleConnectorServiceIntegrationTest : GradleImportingTestCase() { private fun getExecutionSettings(projectPath: String): GradleExecutionSettings = ExternalSystemApiUtil.getExecutionSettings(myProject, projectPath, externalSystemId) - private fun requestConnection(projectPath: String, executionSettings: GradleExecutionSettings) = GradleExecutionHelper() - .execute(projectPath, executionSettings, ExternalSystemTaskId.create(externalSystemId, EXECUTE_TASK, myProject), null, null) { it } + private fun requestConnection(projectPath: String, executionSettings: GradleExecutionSettings): ProjectConnection { + val taskId = ExternalSystemTaskId.create(externalSystemId, EXECUTE_TASK, myProject) + return GradleExecutionHelper.execute(projectPath, executionSettings, taskId, null, null) { it } + } companion object { /** It's sufficient to run the test against single gradle version. */