From 1a53b0db0b4353177638ab60d75b3da360ebeb07 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Wed, 12 Dec 2018 18:42:25 +0100 Subject: [PATCH] LazyRunConfigurationProducer (part 3) --- .../junit/JavaRunConfigurationProducerBase.java | 10 +++++++++- .../TestDiscoveryConfigurationProducer.java | 5 ----- .../execution/actions/LazyRunConfigurationProducer.kt | 2 +- .../execution/actions/RunConfigurationProducer.java | 6 ++++-- .../JUnitTestDiscoveryConfigurationProducer.java | 9 ++++++--- .../TestNGTestDiscoveryConfigurationProducer.java | 9 ++++++--- 6 files changed, 26 insertions(+), 15 deletions(-) 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 59bab4f281dd..0af2c66aadd9 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JavaRunConfigurationProducerBase.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JavaRunConfigurationProducerBase.java @@ -23,8 +23,16 @@ public abstract class JavaRunConfigurationProducerBase { - protected TestDiscoveryConfigurationProducer(ConfigurationType type) { - super(type); - } - - protected abstract void setPosition(JavaTestConfigurationBase configuration, PsiLocation position); protected abstract Pair getPosition(JavaTestConfigurationBase configuration); diff --git a/platform/lang-api/src/com/intellij/execution/actions/LazyRunConfigurationProducer.kt b/platform/lang-api/src/com/intellij/execution/actions/LazyRunConfigurationProducer.kt index 9381278372a1..1d8070055e66 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/LazyRunConfigurationProducer.kt +++ b/platform/lang-api/src/com/intellij/execution/actions/LazyRunConfigurationProducer.kt @@ -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 : RunConfigurationProducer(null) { +abstract class LazyRunConfigurationProducer : RunConfigurationProducer(true) { abstract override fun getConfigurationFactory(): ConfigurationFactory } \ No newline at end of file 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 f871e7df6cbb..515009373197 100644 --- a/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java +++ b/platform/lang-api/src/com/intellij/execution/actions/RunConfigurationProducer.java @@ -56,8 +56,10 @@ public abstract class RunConfigurationProducer { this(ConfigurationTypeUtil.findConfigurationType(type)); } - @SuppressWarnings("unused") - RunConfigurationProducer(@Nullable String internalUsageOnly) { + /** + * Do NOT use directly. + */ + public RunConfigurationProducer(@SuppressWarnings("unused") boolean internalUsageOnly) { myConfigurationFactory = null; } diff --git a/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java index fbce05e9a551..1637a1673cf4 100644 --- a/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java @@ -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>> maxDependency = allDeps.entrySet().stream().max(Comparator.comparingInt(e -> e.getValue().size())); diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java index c75a800ab2e0..c6274d02939b 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java @@ -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); } }