From c1e3a91cb7456068b4892a2fb56eacb0074fa8a5 Mon Sep 17 00:00:00 2001 From: Alexander Kireyev Date: Wed, 2 Mar 2005 16:58:49 +0300 Subject: [PATCH] Corrected classloader usage. --- .../com/intellij/openapi/extensions/ExtensionsArea.java | 1 + .../extensions/impl/ExtensionComponentAdapter.java | 9 ++++++++- .../openapi/extensions/impl/ExtensionsAreaImpl.java | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/extensions/source/com/intellij/openapi/extensions/ExtensionsArea.java b/extensions/source/com/intellij/openapi/extensions/ExtensionsArea.java index d09f6c761731..bfe80343125d 100644 --- a/extensions/source/com/intellij/openapi/extensions/ExtensionsArea.java +++ b/extensions/source/com/intellij/openapi/extensions/ExtensionsArea.java @@ -41,4 +41,5 @@ public interface ExtensionsArea { String getAreaClass(); + void registerExtensionPoint(String extensionPointName, String extensionPointBeanClass, PluginDescriptor descriptor); } diff --git a/extensions/source/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java b/extensions/source/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java index c78c4b67ff95..ff9a0f8ffec4 100644 --- a/extensions/source/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java +++ b/extensions/source/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java @@ -9,6 +9,9 @@ import com.intellij.openapi.extensions.PluginAware; import com.intellij.openapi.extensions.ReaderConfigurator; import com.intellij.openapi.extensions.PluginDescriptor; import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.XppDriver; +import com.thoughtworks.xstream.core.DefaultClassMapper; +import com.thoughtworks.xstream.core.util.CompositeClassLoader; import org.jdom.Element; import org.picocontainer.PicoContainer; import org.picocontainer.PicoInitializationException; @@ -38,7 +41,11 @@ public class ExtensionComponentAdapter extends ConstructorInjectionComponentAdap if (myComponentInstance == null) { if (!Element.class.equals(getComponentImplementation())) { - XStream xStream = new XStream(new PropertyReflectionProvider()); + final CompositeClassLoader classLoader = new CompositeClassLoader(); + if (myPluginDescriptor.getPluginClassLoader() != null) { + classLoader.add(myPluginDescriptor.getPluginClassLoader()); + } + XStream xStream = new XStream(new PropertyReflectionProvider(), new DefaultClassMapper(classLoader), new XppDriver()); xStream.registerConverter(new ElementConverter()); Object componentInstance = super.getComponentInstance(container); if (componentInstance instanceof ReaderConfigurator) { diff --git a/extensions/source/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/extensions/source/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java index a2b066f340ab..c872e92e1293 100644 --- a/extensions/source/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java +++ b/extensions/source/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java @@ -88,7 +88,7 @@ public class ExtensionsAreaImpl implements ExtensionsArea { if (className == null) { throw new RuntimeException("No class specified for extension point: " + epName); } - registerExtensionPoint(epName, className); + registerExtensionPoint(epName, className, pluginDescriptor); } public void registerExtension(final String pluginName, final Element extensionElement) {