From 0f2a8de77cbe940a3627b6a151593d7d46e5e8a5 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 1 Aug 2013 15:07:30 +0200 Subject: [PATCH] JUnit producers converted to new API --- .../ApplicationConfigurationProducer.java | 9 ++-- .../JavaRunConfigurationProducerBase.java | 36 ++++++++++--- .../execution/BaseConfigurationTestCase.java | 11 ++-- .../actions/ConfigurationContext.java | 21 ++++---- .../actions/ConfigurationFromContextImpl.java | 5 ++ .../actions/RunConfigurationProducer.java | 14 +++++ plugins/junit/src/META-INF/plugin.xml | 10 ++-- .../AllInDirectoryConfigurationProducer.java | 2 - .../AllInPackageConfigurationProducer.java | 40 ++++++-------- .../junit/JUnitConfigurationProducer.java | 1 - .../junit/PatternConfigurationProducer.java | 53 +++++++------------ .../junit/TestClassConfigurationProducer.java | 41 ++++++-------- .../TestMethodConfigurationProducer.java | 36 ++++++------- 13 files changed, 139 insertions(+), 140 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java index aaa71bee366f..792c056a5154 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationProducer.java @@ -16,7 +16,6 @@ package com.intellij.execution.application; import com.intellij.execution.JavaExecutionUtil; -import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.Location; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.configurations.ConfigurationUtil; @@ -51,7 +50,7 @@ public class ApplicationConfigurationProducer extends JavaRunConfigurationProduc final PsiClass aClass = method.getContainingClass(); if (ConfigurationUtil.MAIN_CLASS.value(aClass)) { sourceElement.set(method); - setupConfiguration(configuration, aClass, context, location); + setupConfiguration(configuration, aClass, context); return true; } currentElement = method.getParent(); @@ -59,18 +58,16 @@ public class ApplicationConfigurationProducer extends JavaRunConfigurationProduc final PsiClass aClass = ApplicationConfigurationType.getMainClass(element); if (aClass == null) return false; sourceElement.set(aClass); - setupConfiguration(configuration, aClass, context, location); + setupConfiguration(configuration, aClass, context); return true; } private void setupConfiguration(ApplicationConfiguration configuration, final PsiClass aClass, - final ConfigurationContext context, - Location location) { + final ConfigurationContext context) { configuration.MAIN_CLASS_NAME = JavaExecutionUtil.getRuntimeQualifiedName(aClass); configuration.setGeneratedName(); setupConfigurationModule(context, configuration); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); } @Nullable diff --git a/java/execution/impl/src/com/intellij/execution/junit/JavaRunConfigurationProducerBase.java b/java/execution/impl/src/com/intellij/execution/junit/JavaRunConfigurationProducerBase.java index 7c7c3c6eeafa..2d13d4bf26a7 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JavaRunConfigurationProducerBase.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JavaRunConfigurationProducerBase.java @@ -1,19 +1,19 @@ package com.intellij.execution.junit; +import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.actions.ConfigurationFromContext; import com.intellij.execution.actions.RunConfigurationProducer; -import com.intellij.execution.configurations.ConfigurationFactory; -import com.intellij.execution.configurations.ConfigurationType; -import com.intellij.execution.configurations.ModuleBasedConfiguration; -import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.configurations.*; +import com.intellij.execution.testframework.TestSearchScope; import com.intellij.openapi.module.Module; import org.jetbrains.annotations.Nullable; /** * @author yole */ -public abstract class JavaRunConfigurationProducerBase extends RunConfigurationProducer { +public abstract class JavaRunConfigurationProducerBase extends RunConfigurationProducer { protected JavaRunConfigurationProducerBase(ConfigurationFactory configurationFactory) { super(configurationFactory); } @@ -22,7 +22,7 @@ public abstract class JavaRunConfigurationProducerBase T createConfiguration(PsiElement psiElement) { diff --git a/platform/lang-api/src/com/intellij/execution/actions/ConfigurationContext.java b/platform/lang-api/src/com/intellij/execution/actions/ConfigurationContext.java index 98288fc8fd3b..ac81e99473ef 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/ConfigurationContext.java +++ b/platform/lang-api/src/com/intellij/execution/actions/ConfigurationContext.java @@ -142,12 +142,13 @@ public class ConfigurationContext { } final List producers = findPreferredProducers(); - if (producers == null) return null; if (myRuntimeConfiguration != null) { - for (RuntimeConfigurationProducer producer : producers) { - final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this); - if (configuration != null && configuration.getConfiguration() == myRuntimeConfiguration) { - myExistingConfiguration.set(configuration); + if (producers != null) { + for (RuntimeConfigurationProducer producer : producers) { + final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this); + if (configuration != null && configuration.getConfiguration() == myRuntimeConfiguration) { + myExistingConfiguration.set(configuration); + } } } for (RunConfigurationProducer producer : Extensions.getExtensions(RunConfigurationProducer.EP_NAME)) { @@ -157,10 +158,12 @@ public class ConfigurationContext { } } } - for (RuntimeConfigurationProducer producer : producers) { - final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this); - if (configuration != null) { - myExistingConfiguration.set(configuration); + if (producers != null) { + for (RuntimeConfigurationProducer producer : producers) { + final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this); + if (configuration != null) { + myExistingConfiguration.set(configuration); + } } } for (RunConfigurationProducer producer : Extensions.getExtensions(RunConfigurationProducer.EP_NAME)) { diff --git a/platform/lang-api/src/com/intellij/execution/actions/ConfigurationFromContextImpl.java b/platform/lang-api/src/com/intellij/execution/actions/ConfigurationFromContextImpl.java index 5a8f67e54e12..dce85e0e7c9a 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/ConfigurationFromContextImpl.java +++ b/platform/lang-api/src/com/intellij/execution/actions/ConfigurationFromContextImpl.java @@ -59,4 +59,9 @@ public class ConfigurationFromContextImpl extends ConfigurationFromContext { public boolean isProducedBy(Class producerClass) { return producerClass.isInstance(myConfigurationProducer); } + + @Override + public void onFirstRun(ConfigurationContext context, Runnable startRunnable) { + myConfigurationProducer.onFirstRun(this, context, startRunnable); + } } diff --git a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java index 6c573d5a98b8..bb73b4bdac68 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java +++ b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java @@ -23,6 +23,7 @@ import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; @@ -71,6 +72,10 @@ public abstract class RunConfigurationProducer { return true; } + public void onFirstRun(ConfigurationFromContext configuration, ConfigurationContext context, Runnable startRunnable) { + startRunnable.run(); + } + public ConfigurationFromContext findOrCreateConfigurationFromContext(ConfigurationContext context) { Location location = context.getLocation(); if (location == null) { @@ -121,4 +126,13 @@ public abstract class RunConfigurationProducer { } return RunManager.getInstance(context.getProject()).createRunConfiguration("", myConfigurationFactory); } + + public static RunConfigurationProducer getInstance(Class aClass) { + for (RunConfigurationProducer producer : Extensions.getExtensions(EP_NAME)) { + if (aClass.isInstance(producer)) { + return producer; + } + } + return null; + } } diff --git a/plugins/junit/src/META-INF/plugin.xml b/plugins/junit/src/META-INF/plugin.xml index 6c65e31ebd5d..d023807439dc 100644 --- a/plugins/junit/src/META-INF/plugin.xml +++ b/plugins/junit/src/META-INF/plugin.xml @@ -21,11 +21,11 @@ JetBrains - - - - - + + + + + diff --git a/plugins/junit/src/com/intellij/execution/junit/AllInDirectoryConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/AllInDirectoryConfigurationProducer.java index 98224687f585..66b5f43ae94d 100644 --- a/plugins/junit/src/com/intellij/execution/junit/AllInDirectoryConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/AllInDirectoryConfigurationProducer.java @@ -16,7 +16,6 @@ package com.intellij.execution.junit; -import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.junit2.info.LocationUtil; import com.intellij.openapi.module.Module; @@ -64,7 +63,6 @@ public class AllInDirectoryConfigurationProducer extends JUnitConfigurationProdu data.setDirName(virtualFile.getPath()); data.TEST_OBJECT = JUnitConfiguration.TEST_DIRECTORY; configuration.setGeneratedName(); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, context.getLocation()); return true; } } diff --git a/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java index 568f363d064e..d7fc2821a287 100644 --- a/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java @@ -16,43 +16,33 @@ package com.intellij.execution.junit; -import com.intellij.execution.JavaRunConfigurationExtensionManager; -import com.intellij.execution.Location; -import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.actions.ConfigurationFromContext; import com.intellij.execution.junit2.info.LocationUtil; -import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; public class AllInPackageConfigurationProducer extends JUnitConfigurationProducer { - private PsiPackage myPackage = null; - - protected RunnerAndConfigurationSettings createConfigurationByElement(final Location location, final ConfigurationContext context) { - final Project project = location.getProject(); - final PsiElement element = location.getPsiElement(); - myPackage = checkPackage(element); - if (myPackage == null) return null; - if (!LocationUtil.isJarAttached(location, myPackage, JUnitUtil.TESTCASE_CLASS)) return null; - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); - final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration(); + @Override + protected boolean setupConfigurationFromContext(JUnitConfiguration configuration, + ConfigurationContext context, + Ref sourceElement) { + PsiPackage psiPackage = JavaRuntimeConfigurationProducerBase.checkPackage(context.getPsiLocation()); + if (psiPackage == null) return false; + sourceElement.set(psiPackage); + if (!LocationUtil.isJarAttached(context.getLocation(), psiPackage, JUnitUtil.TESTCASE_CLASS)) return false; final JUnitConfiguration.Data data = configuration.getPersistentData(); - data.PACKAGE_NAME = myPackage.getQualifiedName(); + data.PACKAGE_NAME = psiPackage.getQualifiedName(); data.TEST_OBJECT = JUnitConfiguration.TEST_PACKAGE; - data.setScope(setupPackageConfiguration(context, project, configuration, data.getScope())); + data.setScope(setupPackageConfiguration(context, configuration, data.getScope())); configuration.setGeneratedName(); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); - return settings; - } - - public PsiElement getSourceElement() { - return myPackage; + return true; } @Override - public int compareTo(Object o) { - if (o instanceof AllInDirectoryConfigurationProducer) return -PREFERED; - return PREFERED; + public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) { + return !other.isProducedBy(AllInDirectoryConfigurationProducer.class); } } diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationProducer.java index 0c6aeb8f4298..4220c5a0e39c 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationProducer.java @@ -33,7 +33,6 @@ public abstract class JUnitConfigurationProducer extends JavaRunConfigurationPro super(JUnitConfigurationType.getInstance()); } - @Override public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) { return !other.isProducedBy(TestMethodConfigurationProducer.class); diff --git a/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java index ebffc3dd19bc..93cad47668a4 100644 --- a/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java @@ -17,21 +17,17 @@ package com.intellij.execution.junit; import com.intellij.execution.JavaExecutionUtil; -import com.intellij.execution.JavaRunConfigurationExtensionManager; -import com.intellij.execution.Location; -import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.Ref; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -39,29 +35,25 @@ import java.util.List; import java.util.Set; public class PatternConfigurationProducer extends JUnitConfigurationProducer { - - - private PsiElement[] myElements; - - protected RunnerAndConfigurationSettings createConfigurationByElement(final Location location, final ConfigurationContext context) { - final Project project = location.getProject(); + @Override + protected boolean setupConfigurationFromContext(JUnitConfiguration configuration, + ConfigurationContext context, + Ref sourceElement) { final LinkedHashSet classes = new LinkedHashSet(); - myElements = collectPatternElements(context, classes); - if (classes.size() <= 1) return null; - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); - final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration(); + PsiElement[] elements = collectPatternElements(context, classes); + if (classes.size() <= 1) return false; + sourceElement.set(elements[0]); final JUnitConfiguration.Data data = configuration.getPersistentData(); data.setPatterns(classes); data.TEST_OBJECT = JUnitConfiguration.TEST_PATTERN; - data.setScope(setupPackageConfiguration(context, project, configuration, data.getScope())); + data.setScope(setupPackageConfiguration(context, configuration, data.getScope())); configuration.setGeneratedName(); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); - return settings; + return true; } @Override - protected Module findModule(ModuleBasedConfiguration configuration, Module contextModule) { - final Set patterns = ((JUnitConfiguration)configuration).getPersistentData().getPatterns(); + protected Module findModule(JUnitConfiguration configuration, Module contextModule) { + final Set patterns = configuration.getPersistentData().getPatterns(); return findModule(configuration, contextModule, patterns); } @@ -143,25 +135,16 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer { } } - public PsiElement getSourceElement() { - return myElements[0]; - } - @Override - protected RunnerAndConfigurationSettings findExistingByElement(@NotNull Location location, - @NotNull RunnerAndConfigurationSettings[] existingConfigurations, - ConfigurationContext context) { + public boolean isConfigurationFromContext(JUnitConfiguration unitConfiguration, ConfigurationContext context) { final LinkedHashSet classes = new LinkedHashSet(); collectPatternElements(context, classes); - for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) { - final JUnitConfiguration unitConfiguration = (JUnitConfiguration)existingConfiguration.getConfiguration(); - final TestObject testobject = unitConfiguration.getTestObject(); - if (testobject instanceof TestsPattern) { - if (Comparing.equal(classes, unitConfiguration.getPersistentData().getPatterns())) { - return existingConfiguration; - } + final TestObject testobject = unitConfiguration.getTestObject(); + if (testobject instanceof TestsPattern) { + if (Comparing.equal(classes, unitConfiguration.getPersistentData().getPatterns())) { + return true; } } - return null; + return false; } } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java index 6688b959a642..c9ec476c1472 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestClassConfigurationProducer.java @@ -17,12 +17,11 @@ package com.intellij.execution.junit; import com.intellij.execution.JavaExecutionUtil; -import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.Location; -import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.actions.ConfigurationFromContext; import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; @@ -30,34 +29,28 @@ import com.intellij.psi.PsiMethod; import java.util.List; public class TestClassConfigurationProducer extends JUnitConfigurationProducer { - private PsiClass myTestClass; - - protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, final ConfigurationContext context) { - location = JavaExecutionUtil.stepIntoSingleClass(location); - if (location == null) return null; - final Project project = location.getProject(); + @Override + protected boolean setupConfigurationFromContext(JUnitConfiguration configuration, + ConfigurationContext context, + Ref sourceElement) { + Location location = JavaExecutionUtil.stepIntoSingleClass(context.getLocation()); + if (location == null) return false; if (PatternConfigurationProducer.isMultipleElementsSelected(context)) { - return null; + return false; } - myTestClass = JUnitUtil.getTestClass(location); - if (myTestClass == null) return null; - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); - final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration(); + PsiClass testClass = JUnitUtil.getTestClass(location); + if (testClass == null) return false; + sourceElement.set(testClass); setupConfigurationModule(context, configuration); final Module originalModule = configuration.getConfigurationModule().getModule(); - configuration.beClassConfiguration(myTestClass); + configuration.beClassConfiguration(testClass); configuration.restoreOriginalModule(originalModule); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); - return settings; - } - - public PsiElement getSourceElement() { - return myTestClass; + return true; } @Override - public void perform(final ConfigurationContext context, final Runnable performRunnable) { + public void onFirstRun(ConfigurationFromContext fromContext, final ConfigurationContext context, final Runnable performRunnable) { final InheritorChooser inheritorChooser = new InheritorChooser() { @Override @@ -75,7 +68,7 @@ public class TestClassConfigurationProducer extends JUnitConfigurationProducer { super.runForClass(aClass, psiMethod, context, performRunnable); } }; - if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, null, myTestClass)) return; - super.perform(context, performRunnable); + if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, null, (PsiClass)fromContext.getSourceElement())) return; + super.onFirstRun(fromContext, context, performRunnable); } } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java index 4fcb500e9b73..d2b1bb47bbf0 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethodConfigurationProducer.java @@ -19,11 +19,12 @@ package com.intellij.execution.junit; import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.Location; import com.intellij.execution.PsiLocation; -import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.actions.ConfigurationFromContext; import com.intellij.execution.junit2.info.MethodLocation; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; @@ -32,27 +33,22 @@ import java.util.Iterator; import java.util.List; public class TestMethodConfigurationProducer extends JUnitConfigurationProducer { - private Location myMethodLocation; - - protected RunnerAndConfigurationSettings createConfigurationByElement(final Location location, final ConfigurationContext context) { - final Project project = location.getProject(); + @Override + protected boolean setupConfigurationFromContext(JUnitConfiguration configuration, + ConfigurationContext context, + Ref sourceElement) { if (PatternConfigurationProducer.isMultipleElementsSelected(context)) { - return null; + return false; } - myMethodLocation = getTestMethod(location); - if (myMethodLocation == null) return null; - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); - final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration(); + Location methodLocation = getTestMethod(context.getLocation()); + if (methodLocation == null) return false; + sourceElement.set(methodLocation.getPsiElement()); setupConfigurationModule(context, configuration); final Module originalModule = configuration.getConfigurationModule().getModule(); - configuration.beMethodConfiguration(myMethodLocation); + configuration.beMethodConfiguration(methodLocation); configuration.restoreOriginalModule(originalModule); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); - return settings; - } - - public PsiElement getSourceElement() { - return myMethodLocation.getPsiElement(); + JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, context.getLocation()); + return true; } private static Location getTestMethod(final Location location) { @@ -64,8 +60,8 @@ public class TestMethodConfigurationProducer extends JUnitConfigurationProducer } @Override - public void perform(final ConfigurationContext context, final Runnable performRunnable) { - final PsiMethod psiMethod = myMethodLocation.getPsiElement(); + public void onFirstRun(ConfigurationFromContext configuration, final ConfigurationContext context, final Runnable performRunnable) { + final PsiMethod psiMethod = (PsiMethod)configuration.getSourceElement(); final PsiClass containingClass = psiMethod.getContainingClass(); final InheritorChooser inheritorChooser = new InheritorChooser() { @Override @@ -86,7 +82,7 @@ public class TestMethodConfigurationProducer extends JUnitConfigurationProducer } }; if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, psiMethod, containingClass)) return; - super.perform(context, performRunnable); + super.onFirstRun(configuration, context, performRunnable); } }