mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-321510 [Gradle|Lib] new: upgrading version of bundled Gradle tooling API up to 8.6 (PART 3/3)
Added support for the Gradle streamed value API with the target execution GitOrigin-RevId: 50ade0d716c421b06b34d4177cbdbb76e91675c6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7e4d9da546
commit
9ca3db69b4
+8
-2
@@ -4,9 +4,9 @@ package org.jetbrains.plugins.gradle.execution.target
|
||||
import org.gradle.tooling.BuildAction
|
||||
import org.gradle.tooling.BuildActionExecuter
|
||||
import org.gradle.tooling.ResultHandler
|
||||
import org.gradle.tooling.StreamedValueListener
|
||||
import org.gradle.tooling.internal.consumer.PhasedBuildAction
|
||||
import org.jetbrains.plugins.gradle.tooling.proxy.TargetBuildParameters.BuildActionParametersBuilder
|
||||
import org.jetbrains.plugins.gradle.tooling.proxy.TargetBuildParameters.PhasedBuildActionParametersBuilder
|
||||
import org.jetbrains.plugins.gradle.tooling.proxy.TargetBuildParameters.*
|
||||
|
||||
internal abstract class TargetBuildExecutor<R>(
|
||||
connection: TargetProjectConnection,
|
||||
@@ -14,6 +14,8 @@ internal abstract class TargetBuildExecutor<R>(
|
||||
) : AbstractTargetBuildOperation<TargetBuildExecutor<R>, R>(connection, entryPoint),
|
||||
BuildActionExecuter<R> {
|
||||
|
||||
abstract override val targetBuildParametersBuilder: StreamedValueAwareBuilder<*>
|
||||
|
||||
override fun run(): R {
|
||||
return runAndGetResult()
|
||||
}
|
||||
@@ -33,6 +35,10 @@ internal abstract class TargetBuildExecutor<R>(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun setStreamedValueListener(listener: StreamedValueListener) {
|
||||
targetBuildParametersBuilder.setStreamedValueListener(listener)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun <R> createDefaultExecutor(
|
||||
|
||||
+5
@@ -129,6 +129,11 @@ public class DefaultBuildController implements BuildController {
|
||||
return GradleVersionUtil.isGradleAtLeast(gradleVersion, "7.4.2");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void send(T value) {
|
||||
myDelegate.send(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> run(Collection<? extends BuildAction<? extends T>> collection) {
|
||||
if (isParallelModelFetchSupported()) {
|
||||
|
||||
+1
-1
@@ -9,5 +9,5 @@ class IntermediateResult(
|
||||
) : org.gradle.launcher.daemon.protocol.Message(), Serializable
|
||||
|
||||
enum class IntermediateResultType {
|
||||
PROJECT_LOADED, BUILD_FINISHED
|
||||
PROJECT_LOADED, BUILD_FINISHED, STREAMED_VALUE
|
||||
}
|
||||
|
||||
@@ -89,6 +89,13 @@ object Main {
|
||||
.apply { targetBuildParameters.tasks.nullize()?.run { forTasks(*toTypedArray()) } }
|
||||
is BuildActionParameters<*> -> connection.action(targetBuildParameters.buildAction)
|
||||
.apply { targetBuildParameters.tasks.nullize()?.run { forTasks(*toTypedArray()) } }
|
||||
.apply {
|
||||
setStreamedValueListener { result ->
|
||||
LOG.debug("Streamed value received for the build action: $result")
|
||||
val convertedResult = convertAndSerializeData(result)
|
||||
incomingConnectionHandler.dispatch(IntermediateResult(IntermediateResultType.STREAMED_VALUE, convertedResult))
|
||||
}
|
||||
}
|
||||
is PhasedBuildActionParameters -> connection.action()
|
||||
.projectsLoaded(targetBuildParameters.projectsLoadedAction, IntermediateResultHandler { result ->
|
||||
LOG.debug("Project loading intermediate result: $result")
|
||||
@@ -102,6 +109,13 @@ object Main {
|
||||
})
|
||||
.build()
|
||||
.apply { targetBuildParameters.tasks.nullize()?.run { forTasks(*toTypedArray()) } }
|
||||
.apply {
|
||||
setStreamedValueListener { result ->
|
||||
LOG.debug("Streamed value received for the phased build action: $result")
|
||||
val convertedResult = convertAndSerializeData(result)
|
||||
incomingConnectionHandler.dispatch(IntermediateResult(IntermediateResultType.STREAMED_VALUE, convertedResult))
|
||||
}
|
||||
}
|
||||
}
|
||||
val progressEventConverter = ProgressEventConverter()
|
||||
operation.apply {
|
||||
|
||||
+28
-2
@@ -2,6 +2,7 @@
|
||||
package org.jetbrains.plugins.gradle.tooling.proxy
|
||||
|
||||
import org.gradle.tooling.BuildAction
|
||||
import org.gradle.tooling.StreamedValueListener
|
||||
import org.gradle.tooling.events.OperationType
|
||||
import org.gradle.tooling.internal.consumer.PhasedBuildAction.BuildActionWrapper
|
||||
import java.io.Serializable
|
||||
@@ -127,9 +128,34 @@ sealed class TargetBuildParameters : Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
abstract class StreamedValueAwareBuilder<This : StreamedValueAwareBuilder<This>> : TaskAwareBuilder<This>() {
|
||||
|
||||
private var streamedValueListener: StreamedValueListener? = null
|
||||
|
||||
fun setStreamedValueListener(streamedValueListener: StreamedValueListener) {
|
||||
this.streamedValueListener = streamedValueListener
|
||||
}
|
||||
|
||||
override fun buildIntermediateResultHandler(): TargetIntermediateResultHandler {
|
||||
return super.buildIntermediateResultHandler()
|
||||
.then(StreamedIntermediateResultHandler(streamedValueListener))
|
||||
}
|
||||
|
||||
private class StreamedIntermediateResultHandler(
|
||||
private val streamedValueListener: StreamedValueListener?
|
||||
) : TargetIntermediateResultHandler {
|
||||
|
||||
override fun onResult(type: IntermediateResultType, result: Any?) {
|
||||
if (type == IntermediateResultType.STREAMED_VALUE) {
|
||||
streamedValueListener!!.onValue(result!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class BuildActionParametersBuilder<T>(
|
||||
private val action: BuildAction<T>
|
||||
) : TaskAwareBuilder<BuildActionParametersBuilder<T>>() {
|
||||
) : StreamedValueAwareBuilder<BuildActionParametersBuilder<T>>() {
|
||||
|
||||
override fun getThis(): BuildActionParametersBuilder<T> = this
|
||||
|
||||
@@ -144,7 +170,7 @@ sealed class TargetBuildParameters : Serializable {
|
||||
class PhasedBuildActionParametersBuilder(
|
||||
private val projectsLoadedAction: BuildActionWrapper<Any>?,
|
||||
private val buildFinishedAction: BuildActionWrapper<Any>?
|
||||
) : TaskAwareBuilder<PhasedBuildActionParametersBuilder>() {
|
||||
) : StreamedValueAwareBuilder<PhasedBuildActionParametersBuilder>() {
|
||||
|
||||
override fun getThis(): PhasedBuildActionParametersBuilder = this
|
||||
|
||||
|
||||
Reference in New Issue
Block a user