extract junit/testng common part: replace inheritance with delegation to preserve producers ordering (kotlin compatibility)

This commit is contained in:
Anna.Kozlova
2017-03-02 11:48:16 +01:00
parent 837d7ef150
commit 1aa5575f12
2 changed files with 66 additions and 2 deletions
@@ -15,10 +15,40 @@
*/
package com.intellij.execution.junit;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.actions.ConfigurationFromContext;
import com.intellij.execution.testframework.AbstractInClassConfigurationProducer;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
public class TestInClassConfigurationProducer extends AbstractInClassConfigurationProducer<JUnitConfiguration> {
public class TestInClassConfigurationProducer extends JUnitConfigurationProducer {
private JUnitInClassConfigurationProducerDelegate myDelegate = new JUnitInClassConfigurationProducerDelegate();
public TestInClassConfigurationProducer() {
super(JUnitConfigurationType.getInstance());
}
@Override
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
ConfigurationContext context,
Ref<PsiElement> sourceElement) {
return myDelegate.setupConfigurationFromContext(configuration, context, sourceElement);
}
@Override
public void onFirstRun(@NotNull ConfigurationFromContext configuration,
@NotNull ConfigurationContext fromContext,
@NotNull Runnable performRunnable) {
myDelegate.onFirstRun(configuration, fromContext, performRunnable);
}
private static class JUnitInClassConfigurationProducerDelegate
extends AbstractInClassConfigurationProducer<JUnitConfiguration> {
public JUnitInClassConfigurationProducerDelegate() {super(JUnitConfigurationType.getInstance());}
@Override
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration, ConfigurationContext context, Ref<PsiElement> sourceElement) {
return super.setupConfigurationFromContext(configuration, context, sourceElement);
}
}
}
@@ -15,10 +15,44 @@
*/
package com.theoryinpractice.testng.configuration;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.actions.ConfigurationFromContext;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.testframework.AbstractInClassConfigurationProducer;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
public class TestNGInClassConfigurationProducer extends AbstractInClassConfigurationProducer<TestNGConfiguration> {
public class TestNGInClassConfigurationProducer extends TestNGConfigurationProducer {
private TestNGInClassConfigurationProducerDelegate myDelegate = new TestNGInClassConfigurationProducerDelegate(TestNGConfigurationType.getInstance());
protected TestNGInClassConfigurationProducer() {
super(TestNGConfigurationType.getInstance());
}
@Override
public void onFirstRun(@NotNull ConfigurationFromContext configuration,
@NotNull ConfigurationContext fromContext,
@NotNull Runnable performRunnable) {
myDelegate.onFirstRun(configuration, fromContext, performRunnable);
}
@Override
protected boolean setupConfigurationFromContext(TestNGConfiguration configuration,
ConfigurationContext context,
Ref<PsiElement> sourceElement) {
return myDelegate.setupConfigurationFromContext(configuration, context, sourceElement);
}
private static class TestNGInClassConfigurationProducerDelegate extends AbstractInClassConfigurationProducer<TestNGConfiguration> {
protected TestNGInClassConfigurationProducerDelegate(ConfigurationType configurationType) {
super(configurationType);
}
@Override
protected boolean setupConfigurationFromContext(TestNGConfiguration configuration,
ConfigurationContext context,
Ref<PsiElement> sourceElement) {
return super.setupConfigurationFromContext(configuration, context, sourceElement);
}
}
}