From fe6342ffc3467da1bbaf75fb73d245526fd551cd Mon Sep 17 00:00:00 2001 From: Ilya Kazakevich Date: Thu, 4 Dec 2025 16:54:40 +0000 Subject: [PATCH] docs [platform]: Declare contracts in `autoimport`. 1. `settingsFiles` can access IO 2. `register` must be called before `onProjectReloadStart` Merge-request: IJ-MR-184665 Merged-by: Ilya Kazakevich GitOrigin-RevId: 6f68286e54cdf552f06e5822ebf940c9fdbbdfd7 --- .../externalSystem/autoimport/ExternalSystemProjectAware.kt | 6 ++++-- .../autoimport/ExternalSystemProjectTracker.kt | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectAware.kt b/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectAware.kt index bc285d31bb27..842217a2689f 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectAware.kt +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectAware.kt @@ -4,6 +4,7 @@ package com.intellij.openapi.externalSystem.autoimport import com.intellij.openapi.Disposable import com.intellij.openapi.externalSystem.autoimport.ExternalSystemSettingsFilesModificationContext.Event import com.intellij.openapi.externalSystem.autoimport.ExternalSystemSettingsFilesModificationContext.ReloadStatus +import com.intellij.util.concurrency.annotations.RequiresBackgroundThread import org.jetbrains.annotations.ApiStatus import kotlin.time.Duration @@ -13,9 +14,10 @@ interface ExternalSystemProjectAware { /** * Collects settings files which will be watched. - * This property can be called from any thread context to reduce UI freezes and CPU usage. - * Result will be cached, so settings files should be equals between reloads. + * These property is read each time after [reloadProject] gets called, new file was added + * or [ExternalSystemProjectListener.onSettingsFilesListChange] event happened. */ + @get:RequiresBackgroundThread val settingsFiles: Set fun subscribe(listener: ExternalSystemProjectListener, parentDisposable: Disposable) diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectTracker.kt b/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectTracker.kt index d098f99707be..68f401b0cf4c 100644 --- a/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectTracker.kt +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/autoimport/ExternalSystemProjectTracker.kt @@ -13,6 +13,7 @@ interface ExternalSystemProjectTracker { * Starts tracking of project settings that will be defined by [projectAware] * * Auto reloads will be activated after first project refresh + * (i.e. after first [ExternalSystemProjectListener.onProjectReloadStart] / [ExternalSystemProjectListener.onProjectReloadFinish]) * @see [ExternalSystemProjectTracker.activate] for details */ fun register(projectAware: ExternalSystemProjectAware)