diff --git a/openapi/src/com/intellij/ExtensionPoints.java b/openapi/src/com/intellij/ExtensionPoints.java index fe128ea6d4a0..aa29f6b7bd5b 100644 --- a/openapi/src/com/intellij/ExtensionPoints.java +++ b/openapi/src/com/intellij/ExtensionPoints.java @@ -32,4 +32,17 @@ public interface ExtensionPoints { * my.plugin.package.MyErrorHandler class must implement {@link com.intellij.openapi.diagnostic.ErrorReportSubmitter} abstract class. */ String ERROR_HANDLER = "com.intellij.errorHandler"; + + /** + * This extension point allows a plugin vendor to provide patches to junit run/debug configurations + * Extension declaration sample is as follows: + *
+     * <extensions xmlns="com.intellij">
+     *   <junitPatcher implementation="my.plugin.package.MyJUnitPatcher"/>
+     * </extensions>
+     * 
+ * my.plugin.package.MyJUnitPatcher class must implement {@link com.intellij.execution.JUnitPatcher} abstract class. + */ + + String JUNIT_PATCHER = "com.intellij.junitPatcher"; } diff --git a/openapi/src/com/intellij/execution/JUnitPatcher.java b/openapi/src/com/intellij/execution/JUnitPatcher.java new file mode 100644 index 000000000000..3b981c482feb --- /dev/null +++ b/openapi/src/com/intellij/execution/JUnitPatcher.java @@ -0,0 +1,30 @@ +package com.intellij.execution; + +import com.intellij.execution.configurations.JavaParameters; +import com.intellij.openapi.extensions.PluginAware; +import com.intellij.openapi.extensions.PluginDescriptor; + +/** + * User: anna + * Date: Mar 4, 2005 + */ +public abstract class JUnitPatcher implements PluginAware { + private PluginDescriptor myPlugin; + + /** + * Called by the framework. Allows to identify the plugin that provided this extension. + * @param plugin + */ + public void setPluginDescriptor(PluginDescriptor plugin) { + myPlugin = plugin; + } + + /** + * @return plugin that provided this particular extension + */ + public PluginDescriptor getPluginDescriptor() { + return myPlugin; + } + + public abstract void patchJavaParameters(JavaParameters javaParameters); +} diff --git a/source/com/intellij/ide/plugins/PluginManager.java b/source/com/intellij/ide/plugins/PluginManager.java index 3ae4686dcbe7..09f40eb5ce78 100644 --- a/source/com/intellij/ide/plugins/PluginManager.java +++ b/source/com/intellij/ide/plugins/PluginManager.java @@ -2,6 +2,7 @@ package com.intellij.ide.plugins; import com.intellij.ExtensionPoints; import com.intellij.diagnostic.ITNReporter; +import com.intellij.execution.JUnitPatcher; import com.intellij.ide.plugins.cl.IdeaClassLoader; import com.intellij.ide.plugins.cl.PluginClassLoader; import com.intellij.ide.startup.StartupActionScriptManager; @@ -139,6 +140,7 @@ public class PluginManager { }, LoadingOrder.FIRST); Extensions.getRootArea().registerExtensionPoint(ExtensionPoints.ERROR_HANDLER, ErrorReportSubmitter.class.getName()); + Extensions.getRootArea().registerExtensionPoint(ExtensionPoints.JUNIT_PATCHER, JUnitPatcher.class.getName()); Extensions.getRootArea().getExtensionPoint(ExtensionPoints.ERROR_HANDLER).registerExtension(new ITNReporter()); }