diff --git a/platform/lang-api/src/com/intellij/task/ProjectTaskContext.kt b/platform/lang-api/src/com/intellij/task/ProjectTaskContext.kt index ea24fc1683e7..9eac6f0ff46b 100644 --- a/platform/lang-api/src/com/intellij/task/ProjectTaskContext.kt +++ b/platform/lang-api/src/com/intellij/task/ProjectTaskContext.kt @@ -33,6 +33,14 @@ open class ProjectTaskContext @JvmOverloads constructor( @Volatile var isCollectionOfGeneratedFilesEnabled: Boolean = false + /** + * The class that initiated the task execution. + * This is an exposed version of [com.intellij.task.impl.ProjectTaskManagerImpl.BUILD_ORIGINATOR_KEY] + */ + @ApiStatus.Internal + @Volatile + var buildOriginatorClass: Class<*>? = null + @get:ApiStatus.Experimental val generatedFilesRoots: Collection /** diff --git a/platform/lang-impl/src/com/intellij/task/impl/ProjectTaskManagerImpl.java b/platform/lang-impl/src/com/intellij/task/impl/ProjectTaskManagerImpl.java index 7d8ee81951ce..b98881158e99 100644 --- a/platform/lang-impl/src/com/intellij/task/impl/ProjectTaskManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/task/impl/ProjectTaskManagerImpl.java @@ -186,8 +186,17 @@ public final class ProjectTaskManagerImpl extends ProjectTaskManager { } }); + Class buildOriginatorFromProjectUserData = BUILD_ORIGINATOR_KEY.get(myProject); + if (buildOriginatorFromProjectUserData != null) { + myProject.putUserData(BUILD_ORIGINATOR_KEY, null); + } - Pair>> activity = reportBuildStart(projectTask, toRun); + if (context.getBuildOriginatorClass() == null) { + context.setBuildOriginatorClass(buildOriginatorFromProjectUserData); + } + + Pair>> activity = reportBuildStart( + projectTask, context.getBuildOriginatorClass(), toRun); myEventPublisher.started(context); Runnable runnable = () -> { @@ -255,6 +264,7 @@ public final class ProjectTaskManagerImpl extends ProjectTaskManager { } private Pair>> reportBuildStart(@NotNull ProjectTask projectTask, + Class buildOriginator, List>> toRun) { Ref incremental = new Ref<>(null); AtomicInteger modules = new AtomicInteger(0); @@ -285,9 +295,7 @@ public final class ProjectTaskManagerImpl extends ProjectTaskManager { if (modules.get() > 0) { fields.add(MODULES.with(modules.get())); } - Class buildOriginator = BUILD_ORIGINATOR_KEY.get(myProject); if (buildOriginator != null) { - myProject.putUserData(BUILD_ORIGINATOR_KEY, null); fields.add(BUILD_ORIGINATOR.with(buildOriginator)); } return Pair.create(BUILD_ACTIVITY.started(myProject, () -> fields), fields);