mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJ-CR-3467: better place for modification tracker of imported data
GitOrigin-RevId: 9332665046e27168cd58a558a354086b5962012f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
74c1c18870
commit
281cb6bd55
+1
-19
@@ -23,20 +23,17 @@ import com.intellij.openapi.observable.properties.AtomicBooleanProperty
|
||||
import com.intellij.openapi.observable.properties.BooleanProperty
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.ModificationTracker
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.util.LocalTimeCounter.currentTime
|
||||
import com.intellij.util.concurrency.AppExecutorUtil
|
||||
import com.intellij.util.ui.update.MergingUpdateQueue
|
||||
import com.intellij.util.ui.update.Update
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.atomic.AtomicLongFieldUpdater
|
||||
import kotlin.streams.asStream
|
||||
|
||||
@State(name = "ExternalSystemProjectTracker", storages = [Storage(CACHE_FILE)])
|
||||
class AutoImportProjectTracker(private val project: Project) : ExternalSystemProjectTracker, ModificationTracker, PersistentStateComponent<AutoImportProjectTracker.State> {
|
||||
class AutoImportProjectTracker(private val project: Project) : ExternalSystemProjectTracker, PersistentStateComponent<AutoImportProjectTracker.State> {
|
||||
@Suppress("unused")
|
||||
private val debugThrowable = Throwable("Initialized with project=(${project.isDisposed}, ${Disposer.isDisposed(project)}, $project)")
|
||||
|
||||
@@ -56,9 +53,6 @@ class AutoImportProjectTracker(private val project: Project) : ExternalSystemPro
|
||||
|
||||
var isAsyncChangesProcessing by asyncChangesProcessingProperty
|
||||
|
||||
@Volatile
|
||||
private var ownModificationCount = 0L
|
||||
|
||||
private fun createProjectChangesListener() =
|
||||
object : ProjectBatchFileChangeListener(project) {
|
||||
override fun batchChangeStarted(activityName: String?) =
|
||||
@@ -81,7 +75,6 @@ class AutoImportProjectTracker(private val project: Project) : ExternalSystemPro
|
||||
override fun afterProjectRefresh(status: ExternalSystemRefreshStatus) {
|
||||
if (status != SUCCESS) projectData.status.markBroken(currentTime())
|
||||
projectRefreshOperation.finishTask(id)
|
||||
incrementModificationCount()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,14 +250,6 @@ class AutoImportProjectTracker(private val project: Project) : ExternalSystemPro
|
||||
delayDispatcher.activate()
|
||||
}
|
||||
|
||||
override fun getModificationCount(): Long {
|
||||
return ownModificationCount
|
||||
}
|
||||
|
||||
private fun incrementModificationCount() {
|
||||
MOD_COUNT_UPDATER.incrementAndGet(this)
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun getActivatedProjects() =
|
||||
projectDataMap.values
|
||||
@@ -341,9 +326,6 @@ class AutoImportProjectTracker(private val project: Project) : ExternalSystemPro
|
||||
companion object {
|
||||
private val LOG = Logger.getInstance("#com.intellij.openapi.externalSystem.autoimport")
|
||||
|
||||
@JvmStatic
|
||||
private val MOD_COUNT_UPDATER = AtomicLongFieldUpdater.newUpdater(AutoImportProjectTracker::class.java, "ownModificationCount")
|
||||
|
||||
@TestOnly
|
||||
@JvmStatic
|
||||
fun getInstance(project: Project): AutoImportProjectTracker {
|
||||
|
||||
+4
-2
@@ -26,6 +26,7 @@ import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectUtil;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.SimpleModificationTracker;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.serialization.ObjectSerializer;
|
||||
@@ -57,7 +58,8 @@ import static com.intellij.openapi.externalSystem.model.ProjectKeys.PROJECT;
|
||||
* @author Vladislav.Soroka
|
||||
*/
|
||||
@State(name = "ExternalProjectsData", storages = @Storage(StoragePathMacros.WORKSPACE_FILE))
|
||||
public final class ExternalProjectsDataStorage implements SettingsSavingComponentJavaAdapter, PersistentStateComponent<ExternalProjectsDataStorage.State> {
|
||||
public final class ExternalProjectsDataStorage extends SimpleModificationTracker
|
||||
implements SettingsSavingComponentJavaAdapter, PersistentStateComponent<ExternalProjectsDataStorage.State> {
|
||||
private static final Logger LOG = Logger.getInstance(ExternalProjectsDataStorage.class);
|
||||
|
||||
// exposed for tests
|
||||
@@ -233,7 +235,7 @@ public final class ExternalProjectsDataStorage implements SettingsSavingComponen
|
||||
merged.setLastImportTimestamp(lastImportTimestamp);
|
||||
merged.setLastSuccessfulImportTimestamp(lastSuccessfulImportTimestamp);
|
||||
myExternalRootProjects.put(key, merged);
|
||||
|
||||
incModificationCount();
|
||||
markAsChangedAndScheduleSave();
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -10,14 +10,13 @@ import com.intellij.ide.actions.runAnything.activity.RunAnythingCommandLineProvi
|
||||
import com.intellij.ide.actions.runAnything.getPath
|
||||
import com.intellij.ide.util.gotoByName.GotoClassModel2
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker
|
||||
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
||||
import com.intellij.openapi.externalSystem.model.task.TaskData
|
||||
import com.intellij.openapi.externalSystem.service.project.manage.ExternalProjectsDataStorage
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.findProjectData
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.ProjectRootManager
|
||||
import com.intellij.openapi.util.text.StringUtil.substringBeforeLast
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
@@ -164,7 +163,7 @@ class GradleRunAnythingProvider : RunAnythingCommandLineProvider() {
|
||||
|
||||
private fun fetchTasks(project: Project): Map<String, MultiMap<String, TaskData>> {
|
||||
return CachedValuesManager.getManager(project).getCachedValue(project) {
|
||||
CachedValueProvider.Result.create(getGradleTasksMap(project), AutoImportProjectTracker.getInstance(project))
|
||||
CachedValueProvider.Result.create(getGradleTasksMap(project), ExternalProjectsDataStorage.getInstance(project))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user