From 4024c5fbf99cc74db8fc66c5ac9fe87671d6a26b Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 12 Dec 2018 22:37:22 +0100 Subject: [PATCH] FileTypeExtensionUsagesCollectorStartupActivity: simpler code and less classloading --- ...tensionUsagesCollectorStartupActivity.java | 33 ++++--------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java index 911c3d207e90..886f1407b470 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeExtensionUsagesCollectorStartupActivity.java @@ -1,8 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.internal.statistic.collectors.fus.fileTypes; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; @@ -14,23 +12,16 @@ import com.intellij.openapi.editor.actionSystem.EditorAction; import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.FileEditorManager; -import com.intellij.openapi.fileEditor.FileEditorManagerEvent; import com.intellij.openapi.fileEditor.FileEditorManagerListener; -import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupActivity; -import com.intellij.openapi.util.Pair; +import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.messages.MessageBusConnection; import org.jetbrains.annotations.NotNull; -import java.util.concurrent.TimeUnit; - public class FileTypeExtensionUsagesCollectorStartupActivity implements StartupActivity { - private static final Cache, Boolean> EDIT_USAGE_ONE_MINUTE_THROTTLING_CACHE = CacheBuilder.newBuilder() - .maximumSize(1000) - .expireAfterWrite(1, TimeUnit.MINUTES) - .build(); + private static final Key LAST_EDIT_USAGE = Key.create("LAST_EDIT_USAGE"); @Override public void runActivity(@NotNull Project project) { @@ -40,18 +31,6 @@ public class FileTypeExtensionUsagesCollectorStartupActivity implements StartupA public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) { FileTypeOpenUsageTriggerCollector.trigger(project, file.getFileType()); } - - @Override - public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) { - String extension = file.getExtension() != null ? file.getExtension() : file.getName(); - String fileType = file.getFileType().getName(); - EDIT_USAGE_ONE_MINUTE_THROTTLING_CACHE.invalidate(Pair.create(file.getPath(), extension)); - EDIT_USAGE_ONE_MINUTE_THROTTLING_CACHE.invalidate(Pair.create(file.getPath(), fileType)); - } - - @Override - public void selectionChanged(@NotNull FileEditorManagerEvent event) { - } }); ApplicationManager.getApplication().getMessageBus().connect(project).subscribe(AnActionListener.TOPIC, new AnActionListener() { @Override @@ -66,9 +45,11 @@ public class FileTypeExtensionUsagesCollectorStartupActivity implements StartupA if (editor == null || editor.getProject() != project) return; VirtualFile file = FileDocumentManager.getInstance().getFile(editor.getDocument()); if (file != null) { - final FileType fileType = file.getFileType(); - if (EDIT_USAGE_ONE_MINUTE_THROTTLING_CACHE.asMap().putIfAbsent(Pair.create(file.getPath(), fileType.getName()), Boolean.TRUE) == null) - FileTypeEditUsageTriggerCollector.trigger(project, fileType); + Long lastEdit = editor.getUserData(LAST_EDIT_USAGE); + if (lastEdit == null || System.currentTimeMillis() - lastEdit > 60 * 1000) { + editor.putUserData(LAST_EDIT_USAGE, System.currentTimeMillis()); + FileTypeEditUsageTriggerCollector.trigger(project, file.getFileType()); + } } }