From d57d73aec9a39b66b70d3723d3da155eabb4f0f9 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 3 Sep 2018 13:33:55 +0200 Subject: [PATCH] use getExtensionList() (avoid array.clone) --- .../extensions/ExtensionPointName.java | 4 +++ .../injected/InjectedLanguageManagerImpl.java | 22 +++------------ .../ide/startup/impl/StartupManagerImpl.java | 28 ++++++------------- .../application/impl/ApplicationImpl.java | 2 +- plugins/settings-repository/src/IcsManager.kt | 2 +- 5 files changed, 18 insertions(+), 40 deletions(-) diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java index 40290ec61b33..8865c07a8f1b 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java @@ -43,6 +43,10 @@ public final class ExtensionPointName { return getExtensionList(null); } + public boolean hasAnyExtensions() { + return getPoint(null).hasAnyExtensions(); + } + @NotNull public List getExtensionList(@Nullable AreaInstance areaInstance) { return getPoint(areaInstance).getExtensionList(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java index 943def5660ba..7c9c6b5259c8 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageManagerImpl.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// 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.psi.impl.source.tree.injected; @@ -169,7 +155,7 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme List allInjectors = ContainerUtil.newArrayList(); allInjectors.addAll(myManualInjectors); Collections.addAll(allInjectors, MultiHostInjector.MULTIHOST_INJECTOR_EP_NAME.getExtensions(myProject)); - if (LanguageInjector.EXTENSION_POINT_NAME.getExtensions().length > 0) { + if (LanguageInjector.EXTENSION_POINT_NAME.hasAnyExtensions()) { allInjectors.add(PsiManagerRegisteredInjectorsAdapter.INSTANCE); } @@ -451,14 +437,14 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme .startInjecting(language) .addPlace(prefix, suffix, host, rangeInsideHost) .doneInjecting(); - for (LanguageInjector injector : Extensions.getExtensions(LanguageInjector.EXTENSION_POINT_NAME)) { + for (LanguageInjector injector : LanguageInjector.EXTENSION_POINT_NAME.getExtensionList()) { injector.getLanguagesToInject(host, placesRegistrar); } } @Override @NotNull - public List> elementsToInjectIn() { + public List> elementsToInjectIn() { return Collections.singletonList(PsiLanguageInjectionHost.class); } } diff --git a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java index c271ab7478c1..76cb76b28146 100644 --- a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// 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.ide.startup.impl; import com.intellij.diagnostic.PerformanceWatcher; @@ -23,11 +9,13 @@ import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; import com.intellij.openapi.application.*; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.project.*; +import com.intellij.openapi.project.DumbModeTask; +import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.DumbServiceImpl; +import com.intellij.openapi.project.Project; import com.intellij.openapi.project.impl.ProjectLifecycleListener; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.impl.ProjectRootManagerImpl; @@ -146,7 +134,7 @@ public class StartupManagerImpl extends StartupManagerEx { public void runPostStartupActivitiesFromExtensions() { PerformanceWatcher.Snapshot snapshot = PerformanceWatcher.takeSnapshot(); AtomicBoolean uiFreezeWarned = new AtomicBoolean(); - for (StartupActivity extension : Extensions.getExtensions(StartupActivity.POST_STARTUP_ACTIVITY)) { + for (StartupActivity extension : StartupActivity.POST_STARTUP_ACTIVITY.getExtensionList()) { Runnable runnable = () -> logActivityDuration(uiFreezeWarned, extension); if (DumbService.isDumbAware(extension)) { runActivity(runnable); @@ -160,7 +148,7 @@ public class StartupManagerImpl extends StartupManagerEx { private void logActivityDuration(AtomicBoolean uiFreezeWarned, StartupActivity extension) { long duration = runAndMeasure(extension); - + Application app = ApplicationManager.getApplication(); if (duration > 100 && !app.isUnitTestMode()) { boolean edt = app.isDispatchThread(); @@ -382,7 +370,7 @@ public class StartupManagerImpl extends StartupManagerEx { Runnable runnable = () -> { if (myProject.isDisposed()) return; - + //noinspection SynchronizeOnThis synchronized (this) { // in tests which simulate project opening, post-startup activities could have been run already. diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java index 309ec0e4a648..6c9ff4e29d39 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java @@ -408,7 +408,7 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App getPicoContainer().getComponentInstance(ServiceManagerImpl.class); String effectiveConfigPath = FileUtilRt.toSystemIndependentName(configPath == null ? PathManager.getConfigPath() : configPath); - ApplicationLoadListener[] applicationLoadListeners = ApplicationLoadListener.EP_NAME.getExtensions(); + List applicationLoadListeners = ApplicationLoadListener.EP_NAME.getExtensionList(); for (ApplicationLoadListener listener : applicationLoadListeners) { try { listener.beforeApplicationLoaded(this, effectiveConfigPath); diff --git a/plugins/settings-repository/src/IcsManager.kt b/plugins/settings-repository/src/IcsManager.kt index e503e5a99fd1..3df7d18af354 100644 --- a/plugins/settings-repository/src/IcsManager.kt +++ b/plugins/settings-repository/src/IcsManager.kt @@ -259,7 +259,7 @@ class IcsApplicationLoadListener : ApplicationLoadListener { val removeOtherXml = repositoryManager.delete("other.xml") if (migrateSchemes || migrateKeyMaps || removeOtherXml) { // schedule push to avoid merge conflicts - application.invokeLater({ icsManager.autoSyncManager.autoSync(force = true) }) + application.invokeLater { icsManager.autoSyncManager.autoSync(force = true) } } }