mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4c0f282244
commit
1639e3cedd
@@ -340,7 +340,7 @@
|
||||
<extensionPoint name="themeProvider" beanClass="com.intellij.ide.ui.UIThemeProvider" dynamic="true"/>
|
||||
<extensionPoint name="lafProvider" interface="com.intellij.ide.ui.LafProvider"/>
|
||||
<extensionPoint name="dateTimeFormatter" beanClass="com.intellij.util.text.DateTimeFormatterBean" dynamic="true"/>
|
||||
<extensionPoint name="themeMetadataProvider" beanClass="com.intellij.ide.ui.UIThemeMetadataProvider"/>
|
||||
<extensionPoint name="themeMetadataProvider" beanClass="com.intellij.ide.ui.UIThemeMetadataProvider" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="tree.CustomLanguageASTComparator" beanClass="com.intellij.lang.LanguageExtensionPoint" dynamic="true">
|
||||
<with attribute="implementationClass" implements="com.intellij.psi.tree.CustomLanguageASTComparator"/>
|
||||
|
||||
@@ -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<UIThemeMetadata> themeMetadata = ContainerUtil.mapNotNull(EP_NAME.getExtensionList(), UIThemeMetadataProvider::loadMetadata);
|
||||
for (UIThemeMetadata metadata : themeMetadata) {
|
||||
myCache.put(metadata, ContainerUtil.newMapFromValues(metadata.getUiKeyMetadata().iterator(), o -> o.getKey()));
|
||||
|
||||
Reference in New Issue
Block a user