LazyRunConfigurationProducer (part 3)

This commit is contained in:
Vladimir Krivosheev
2018-12-12 20:10:36 +01:00
parent ae7f27b684
commit 1a53b0db0b
6 changed files with 26 additions and 15 deletions
@@ -23,8 +23,16 @@ public abstract class JavaRunConfigurationProducerBase<T extends ModuleBasedConf
super(configurationFactory);
}
/**
* @deprecated Override {@link LazyRunConfigurationProducer}.
*/
@Deprecated
protected JavaRunConfigurationProducerBase(@NotNull ConfigurationType configurationType) {
super(configurationType);
this(configurationType.getConfigurationFactories()[0]);
}
protected JavaRunConfigurationProducerBase() {
super(true);
}
protected boolean setupConfigurationModule(@Nullable ConfigurationContext context, T configuration) {
@@ -31,11 +31,6 @@ import java.util.*;
import java.util.stream.Collectors;
public abstract class TestDiscoveryConfigurationProducer extends JavaRunConfigurationProducerBase<JavaTestConfigurationWithDiscoverySupport> {
protected TestDiscoveryConfigurationProducer(ConfigurationType type) {
super(type);
}
protected abstract void setPosition(JavaTestConfigurationBase configuration, PsiLocation<PsiMethod> position);
protected abstract Pair<String, String> getPosition(JavaTestConfigurationBase configuration);
@@ -10,6 +10,6 @@ import com.intellij.execution.configurations.RunConfiguration
* Approach to pass configuration factory as [RunConfigurationProducer] constructor parameter is better in terms of design,
* but problem is that iteration of producer list leads to loading of not required configuration factories (in turn, it leads to loading more and more not required classes)
*/
abstract class LazyRunConfigurationProducer<T : RunConfiguration> : RunConfigurationProducer<T>(null) {
abstract class LazyRunConfigurationProducer<T : RunConfiguration> : RunConfigurationProducer<T>(true) {
abstract override fun getConfigurationFactory(): ConfigurationFactory
}
@@ -56,8 +56,10 @@ public abstract class RunConfigurationProducer<T extends RunConfiguration> {
this(ConfigurationTypeUtil.findConfigurationType(type));
}
@SuppressWarnings("unused")
RunConfigurationProducer(@Nullable String internalUsageOnly) {
/**
* Do NOT use directly.
*/
public RunConfigurationProducer(@SuppressWarnings("unused") boolean internalUsageOnly) {
myConfigurationFactory = null;
}
@@ -4,6 +4,7 @@ package com.intellij.execution.junit.testDiscovery;
import com.intellij.execution.JavaTestConfigurationBase;
import com.intellij.execution.Location;
import com.intellij.execution.PsiLocation;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.junit.JUnitConfiguration;
@@ -23,8 +24,10 @@ import java.util.*;
import java.util.stream.Collectors;
public class JUnitTestDiscoveryConfigurationProducer extends TestDiscoveryConfigurationProducer {
protected JUnitTestDiscoveryConfigurationProducer() {
super(JUnitConfigurationType.getInstance());
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return JUnitConfigurationType.getInstance().getConfigurationFactories()[0];
}
@Override
@@ -88,7 +91,7 @@ public class JUnitTestDiscoveryConfigurationProducer extends TestDiscoveryConfig
allDeps.computeIfAbsent(usedModule, __ -> new LinkedHashSet<>()).add(usedModule);
}
Optional<Map.Entry<Module, Set<Module>>> maxDependency =
allDeps.entrySet().stream().max(Comparator.comparingInt(e -> e.getValue().size()));
@@ -4,6 +4,7 @@ package com.theoryinpractice.testng.configuration.testDiscovery;
import com.intellij.execution.JavaTestConfigurationBase;
import com.intellij.execution.Location;
import com.intellij.execution.PsiLocation;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.runners.ExecutionEnvironment;
@@ -20,8 +21,10 @@ import com.theoryinpractice.testng.util.TestNGUtil;
import org.jetbrains.annotations.NotNull;
public class TestNGTestDiscoveryConfigurationProducer extends TestDiscoveryConfigurationProducer {
protected TestNGTestDiscoveryConfigurationProducer() {
super(TestNGConfigurationType.getInstance());
@NotNull
@Override
public ConfigurationFactory getConfigurationFactory() {
return TestNGConfigurationType.getInstance().getConfigurationFactories()[0];
}
@Override
@@ -52,7 +55,7 @@ public class TestNGTestDiscoveryConfigurationProducer extends TestDiscoveryConfi
ExecutionEnvironment environment) {
TestData data = ((TestNGConfiguration)configuration).getPersistantData();
data.setPatterns(collectMethodPatterns(testMethods));
data.TEST_OBJECT = TestType.PATTERN.type;
data.TEST_OBJECT = TestType.PATTERN.type;
return new TestNGRunnableState(environment, (TestNGConfiguration)configuration);
}
}