From 5f3b22977cb37a1408bff0979af7bffef3ec526e Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 4 Jul 2024 00:49:44 +0200 Subject: [PATCH] usage view - reduce usage of com.intellij.openapi.util.Factory GitOrigin-RevId: d91139cbaf328ed536f4ad9db84aafbcbad64305 --- platform/usageView-impl/api-dump.txt | 2 +- .../usages/impl/SearchForUsagesRunnable.java | 12 ++++++------ .../src/com/intellij/usages/impl/UsageViewImpl.java | 6 +++--- .../intellij/usages/impl/UsageViewManagerImpl.java | 4 ++-- platform/usageView/api-dump.txt | 2 +- .../src/com/intellij/usages/UsageViewManager.java | 6 ++++-- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/platform/usageView-impl/api-dump.txt b/platform/usageView-impl/api-dump.txt index 8f22a5b651bb..bb51634fdab9 100644 --- a/platform/usageView-impl/api-dump.txt +++ b/platform/usageView-impl/api-dump.txt @@ -160,7 +160,7 @@ c:com.intellij.usages.impl.UsageViewManagerImpl - s:getProgressTitle(com.intellij.usages.UsageViewPresentation):java.lang.String - getSelectedUsageView():com.intellij.usages.UsageView - searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,com.intellij.usages.FindUsagesProcessPresentation,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):V -- searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView +- searchAndShowUsages(com.intellij.usages.UsageTarget[],java.util.function.Supplier,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView - showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation):com.intellij.usages.UsageView - showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation,com.intellij.openapi.util.Factory):com.intellij.usages.UsageView c:com.intellij.usages.impl.rules.FileGroupingRule diff --git a/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java b/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java index 0888369f8d96..e2112969b227 100644 --- a/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java +++ b/platform/usageView-impl/src/com/intellij/usages/impl/SearchForUsagesRunnable.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.usages.impl; import com.intellij.diagnostic.PerformanceWatcher; @@ -23,7 +23,6 @@ import com.intellij.openapi.progress.util.TooManyUsagesStatus; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.Factory; import com.intellij.openapi.util.NlsSafe; import com.intellij.openapi.util.Segment; import com.intellij.openapi.util.text.HtmlBuilder; @@ -57,6 +56,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; +import java.util.function.Supplier; final class SearchForUsagesRunnable implements Runnable { @NonNls private static final String FIND_OPTIONS_HREF_TARGET = "FindOptions"; @@ -70,7 +70,7 @@ final class SearchForUsagesRunnable implements Runnable { private final AtomicReference myUsageViewRef; private final UsageViewPresentation myPresentation; private final UsageTarget[] mySearchFor; - private final Factory mySearcherFactory; + private final Supplier mySearcherFactory; private final FindUsagesProcessPresentation myProcessPresentation; @NotNull private final SearchScope mySearchScopeToWarnOfFallingOutOf; private final UsageViewManager.UsageViewStateListener myListener; @@ -84,7 +84,7 @@ final class SearchForUsagesRunnable implements Runnable { @NotNull AtomicReference usageViewRef, @NotNull UsageViewPresentation presentation, UsageTarget @NotNull [] searchFor, - @NotNull Factory searcherFactory, + @NotNull Supplier searcherFactory, @NotNull FindUsagesProcessPresentation processPresentation, @NotNull SearchScope searchScopeToWarnOfFallingOutOf, @Nullable UsageViewManager.UsageViewStateListener listener, @@ -299,7 +299,7 @@ final class SearchForUsagesRunnable implements Runnable { return null; } - UsageViewEx usageView = myUsageViewManager.createUsageView(mySearchFor, Usage.EMPTY_ARRAY, myPresentation, mySearcherFactory); + UsageViewEx usageView = myUsageViewManager.createUsageView(mySearchFor, Usage.EMPTY_ARRAY, myPresentation, mySearcherFactory::get); if (myUsageViewRef.compareAndSet(null, usageView)) { // associate progress only if created successfully, otherwise Dispose will cancel the actual progress, see IDEA-195542 PsiElement element = getPsiElement(mySearchFor); @@ -363,7 +363,7 @@ final class SearchForUsagesRunnable implements Runnable { } TooManyUsagesStatus.createFor(indicator); - UsageSearcher usageSearcher = mySearcherFactory.create(); + UsageSearcher usageSearcher = mySearcherFactory.get(); long startSearchStamp = System.currentTimeMillis(); GlobalSearchScope everythingScope = GlobalSearchScope.everythingScope(myProject); diff --git a/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java b/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java index 783f6565b3ff..21d90de1a13d 100644 --- a/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java +++ b/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewImpl.java @@ -103,7 +103,7 @@ public class UsageViewImpl implements UsageViewEx { private final UsageTarget[] myTargets; private UsageGroupingRule[] myGroupingRules; private final UsageFilteringRuleState myFilteringRulesState = UsageFilteringRuleStateService.createFilteringRuleState(); - private final Factory myUsageSearcherFactory; + private final Supplier myUsageSearcherFactory; private final @NotNull Project myProject; private volatile boolean mySearchInProgress = true; @@ -197,7 +197,7 @@ public class UsageViewImpl implements UsageViewEx { @NotNull CoroutineScope coroutineScope, @NotNull UsageViewPresentation presentation, UsageTarget @NotNull [] targets, - @Nullable Factory usageSearcherFactory) { + @Nullable Supplier usageSearcherFactory) { this.coroutineScope = coroutineScope; // fire events every 50 ms, not more often to batch requests myUniqueIdentifier = COUNTER.getAndIncrement(); @@ -1778,7 +1778,7 @@ public class UsageViewImpl implements UsageViewEx { public boolean canPerformReRun() { if (myRerunAction != null && myRerunAction.isEnabled()) return allTargetsAreValid(); try { - return myUsageSearcherFactory != null && allTargetsAreValid() && myUsageSearcherFactory.create() != null; + return myUsageSearcherFactory != null && allTargetsAreValid() && myUsageSearcherFactory.get() != null; } catch (PsiInvalidElementAccessException e) { return false; diff --git a/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewManagerImpl.java b/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewManagerImpl.java index 0f21910bc17c..a4eb8bcda6d6 100644 --- a/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewManagerImpl.java +++ b/platform/usageView-impl/src/com/intellij/usages/impl/UsageViewManagerImpl.java @@ -140,7 +140,7 @@ public class UsageViewManagerImpl extends UsageViewManager { @Override public @Nullable UsageView searchAndShowUsages(UsageTarget @NotNull [] searchFor, - @NotNull Factory searcherFactory, + @NotNull Supplier searcherFactory, boolean showPanelIfOnlyOneUsage, boolean showNotFoundMessage, @NotNull UsageViewPresentation presentation, @@ -153,7 +153,7 @@ public class UsageViewManagerImpl extends UsageViewManager { } private UsageView doSearchAndShow(UsageTarget @NotNull [] searchFor, - @NotNull Factory searcherFactory, + @NotNull Supplier searcherFactory, @NotNull UsageViewPresentation presentation, @NotNull FindUsagesProcessPresentation processPresentation, @Nullable UsageViewStateListener listener) { diff --git a/platform/usageView/api-dump.txt b/platform/usageView/api-dump.txt index 113340afa0aa..ba75f79bfb40 100644 --- a/platform/usageView/api-dump.txt +++ b/platform/usageView/api-dump.txt @@ -349,7 +349,7 @@ a:com.intellij.usages.UsageViewManager - a:getSelectedUsageView():com.intellij.usages.UsageView - s:isSelfUsage(com.intellij.usages.Usage,com.intellij.usages.UsageTarget[]):Z - a:searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,com.intellij.usages.FindUsagesProcessPresentation,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):V -- a:searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView +- a:searchAndShowUsages(com.intellij.usages.UsageTarget[],java.util.function.Supplier,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView - a:showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation):com.intellij.usages.UsageView - a:showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation,com.intellij.openapi.util.Factory):com.intellij.usages.UsageView com.intellij.usages.UsageViewManager$UsageViewStateListener diff --git a/platform/usageView/src/com/intellij/usages/UsageViewManager.java b/platform/usageView/src/com/intellij/usages/UsageViewManager.java index db3560408f2d..37e84f8e5392 100644 --- a/platform/usageView/src/com/intellij/usages/UsageViewManager.java +++ b/platform/usageView/src/com/intellij/usages/UsageViewManager.java @@ -1,4 +1,4 @@ -// Copyright 2000-2021 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. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.usages; @@ -10,6 +10,8 @@ import com.intellij.usages.rules.PsiElementUsage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.function.Supplier; + public abstract class UsageViewManager { public static UsageViewManager getInstance (Project project) { return project.getService(UsageViewManager.class); @@ -31,7 +33,7 @@ public abstract class UsageViewManager { @Nullable ("returns null in case of no usages found or usage view not shown for one usage") public abstract UsageView searchAndShowUsages(UsageTarget @NotNull [] searchFor, - @NotNull Factory searcherFactory, + @NotNull Supplier searcherFactory, boolean showPanelIfOnlyOneUsage, boolean showNotFoundMessage, @NotNull UsageViewPresentation presentation,