From 1639e3cedd8c9e87d747cee4271ab80321d571a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Mon, 2 Nov 2020 17:38:31 +0100 Subject: [PATCH] IDEA-254308 Plugin org.jetbrains.plugins.remote-run is not unload-safe because of extension to non-dynamic EP com.intellij.themeMetadataProvider GitOrigin-RevId: fba396fc989726306f4e9c84b76f3ac90697b29a --- .../src/META-INF/PlatformExtensionPoints.xml | 2 +- .../src/themes/metadata/UIThemeMetadataService.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml index 59d4cbd61de7..3c4bd4c8f0aa 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml @@ -340,7 +340,7 @@ - + diff --git a/plugins/devkit/devkit-core/src/themes/metadata/UIThemeMetadataService.java b/plugins/devkit/devkit-core/src/themes/metadata/UIThemeMetadataService.java index 66f039a9b8cd..21c45ac80f91 100644 --- a/plugins/devkit/devkit-core/src/themes/metadata/UIThemeMetadataService.java +++ b/plugins/devkit/devkit-core/src/themes/metadata/UIThemeMetadataService.java @@ -4,6 +4,7 @@ package org.jetbrains.idea.devkit.themes.metadata; import com.intellij.ide.ui.UIThemeMetadata; import com.intellij.ide.ui.UIThemeMetadataProvider; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.extensions.ExtensionPointAdapter; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.util.Pair; import com.intellij.util.PairProcessor; @@ -26,6 +27,17 @@ public class UIThemeMetadataService { } public UIThemeMetadataService() { + loadMetadata(); + EP_NAME.addExtensionPointListener(new ExtensionPointAdapter<>() { + @Override + public void extensionListChanged() { + myCache.clear(); + loadMetadata(); + } + }, null); + } + + private void loadMetadata() { final List themeMetadata = ContainerUtil.mapNotNull(EP_NAME.getExtensionList(), UIThemeMetadataProvider::loadMetadata); for (UIThemeMetadata metadata : themeMetadata) { myCache.put(metadata, ContainerUtil.newMapFromValues(metadata.getUiKeyMetadata().iterator(), o -> o.getKey()));