convert DeployToServerConfigurationTypesRegistrar / WebpMetadata / LibraryKindLoader from applicationInitializedListener to applicationService — it takes relatively a lot of time

GitOrigin-RevId: 0494efaab588400fabcbe21f135f84a35d656124
This commit is contained in:
Vladimir Krivosheev
2021-04-05 20:35:37 +00:00
committed by intellij-monorepo-bot
parent f6ccd9d67c
commit 60bd9a9c9b
6 changed files with 26 additions and 21 deletions
@@ -1,7 +1,6 @@
// Copyright 2000-2020 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-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.
package com.intellij.openapi.roots.impl.libraries;
import com.intellij.ide.ApplicationInitializedListener;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.extensions.ExtensionPointListener;
import com.intellij.openapi.extensions.PluginDescriptor;
@@ -16,9 +15,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.function.Consumer;
final class LibraryKindLoader implements ApplicationInitializedListener {
@Override
public void componentsInitialized() {
final class LibraryKindLoader {
private LibraryKindLoader() {
//todo[nik] this is temporary workaround for IDEA-98118: we need to initialize all library types to ensure that their kinds are created and registered in LibraryKind.ourAllKinds
//In order to properly fix the problem we should extract all UI-related methods from LibraryType to a separate class and move LibraryType to intellij.platform.projectModel.impl module
LibraryType.EP_NAME.getExtensionList();
@@ -1323,7 +1323,7 @@
<highlightingPassFactory implementation="com.intellij.codeInsight.daemon.impl.ExternalToolPassFactory$MyRegistrar"/>
<highlightingPassFactory implementation="com.intellij.codeInsight.daemon.impl.WolfPassFactory$MyRegistrar"/>
<applicationInitializedListener implementation="com.intellij.openapi.roots.impl.libraries.LibraryKindLoader"/>
<applicationService serviceImplementation="com.intellij.openapi.roots.impl.libraries.LibraryKindLoader" preload="await"/>
<projectService serviceInterface="com.intellij.codeInsight.daemon.impl.IntentionsUI"
serviceImplementation="com.intellij.codeInsight.daemon.impl.IntentionsUIImpl"/>
<joinLinesHandler implementation="com.intellij.codeInsight.editorActions.CommentJoinLinesHandler" order="last"/>
@@ -37,8 +37,9 @@
serviceImplementation="com.intellij.remoteServer.impl.configuration.deployment.DeploymentConfigurationManagerImpl"/>
<remoteServer.deploymentSource.type
implementation="com.intellij.remoteServer.impl.configuration.deployment.ModuleDeploymentSourceType"/>
<applicationInitializedListener
implementation="com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationTypesRegistrar"/>
<applicationService
serviceImplementation="com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationTypesRegistrar"
preload="await"/>
<projectService serviceImplementation="com.intellij.remoteServer.impl.runtime.ui.RemoteServersDeploymentManager"/>
<serviceViewContributor implementation="com.intellij.remoteServer.impl.runtime.ui.DefaultRemoteServersServiceViewContributor"/>
@@ -2,21 +2,27 @@
package com.intellij.remoteServer.impl.configuration.deployment;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.ide.ApplicationInitializedListener;
import com.intellij.openapi.extensions.ExtensionPointListener;
import com.intellij.openapi.extensions.PluginDescriptor;
import com.intellij.openapi.extensions.impl.ExtensionPointImpl;
import com.intellij.remoteServer.ServerType;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public final class DeployToServerConfigurationTypesRegistrar implements ApplicationInitializedListener {
@Override
public void componentsInitialized() {
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
// sync preloaded service and not as an ApplicationInitializedListener because it takes relatively a lot of time
public final class DeployToServerConfigurationTypesRegistrar {
private DeployToServerConfigurationTypesRegistrar() {
//todo[nik] improve this: configuration types should be loaded lazily
getConfigurationTypesExtPoint()
.registerExtensions(ContainerUtil.map(ServerType.EP_NAME.getExtensionList(), type -> new DeployToServerConfigurationType(type)));
Collection<? extends ServerType<?>> collection = ServerType.EP_NAME.getExtensionList();
List<DeployToServerConfigurationType> list = new ArrayList<>(collection.size());
for (ServerType<?> t : collection) {
list.add(new DeployToServerConfigurationType(t));
}
getConfigurationTypesExtPoint().registerExtensions(list);
ServerType.EP_NAME.addExtensionPointListener(new ExtensionPointListener<>() {
@Override
+1 -1
View File
@@ -8,6 +8,6 @@
]]></description>
<extensions defaultExtensionNs="com.intellij">
<fileType name="Image" extensions="webp"/>
<applicationInitializedListener implementation="com.android.tools.adtui.webp.WebpMetadata"/>
<projectService serviceImplementation="com.android.tools.adtui.webp.WebpMetadata$WebpMetadataRegistrar" preload="await"/>
</extensions>
</idea-plugin>
@@ -15,7 +15,6 @@
*/
package com.android.tools.adtui.webp;
import com.intellij.ide.ApplicationInitializedListener;
import org.w3c.dom.Node;
import javax.imageio.metadata.IIOInvalidTreeException;
@@ -25,7 +24,7 @@ import javax.imageio.spi.IIORegistry;
import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.spi.ImageWriterSpi;
public final class WebpMetadata extends IIOMetadata implements ApplicationInitializedListener {
public final class WebpMetadata extends IIOMetadata {
public static final String WEBP_FORMAT_LOWER_CASE = "webp";
public static final String WEBP_FORMAT_UPPER_CASE = "WEBP";
public static final String[] WEBP_FORMAT_NAMES = new String[] {WEBP_FORMAT_UPPER_CASE, WEBP_FORMAT_LOWER_CASE};
@@ -36,9 +35,10 @@ public final class WebpMetadata extends IIOMetadata implements ApplicationInitia
public static final float DEFAULT_ENCODING_QUALITY = 0.75f;
public static final boolean DEFAULT_LOSSLESS = true;
@Override
public void componentsInitialized() {
ensureWebpRegistered();
static final class WebpMetadataRegistrar {
private WebpMetadataRegistrar() {
ensureWebpRegistered();
}
}
/**