From cde9f79621ed5e028badacd8914ffc2a3a5029a8 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 10 Apr 2015 19:46:22 +0300 Subject: [PATCH] removeUnloadableExtensions() for upsource --- .../extensions/impl/ExtensionPointImpl.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java index a7be1fd2c1ad..129ae4a69abc 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 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. @@ -261,6 +261,19 @@ public class ExtensionPointImpl implements ExtensionPoint { } } + @SuppressWarnings("unused") // upsource + public synchronized void removeUnloadableExtensions() { + ExtensionComponentAdapter[] adapters = myExtensionAdapters.toArray(new ExtensionComponentAdapter[myExtensionAdapters.size()]); + for (ExtensionComponentAdapter adapter : adapters) { + try { + adapter.getComponentImplementation(); + } + catch (Throwable e) { + unregisterExtensionAdapter(adapter); + } + } + } + @Override @Nullable public T getExtension() { @@ -423,7 +436,7 @@ public class ExtensionPointImpl implements ExtensionPoint { myExtensionsCache = null; } - synchronized boolean unregisterExtensionAdapter(@NotNull ExtensionComponentAdapter adapter) { + public synchronized boolean unregisterExtensionAdapter(@NotNull ExtensionComponentAdapter adapter) { try { if (myExtensionAdapters.remove(adapter)) { return true;