| 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.*; |
| import com.intellij.execution.testframework.TestSearchScope; |
| import com.intellij.openapi.module.Module; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * @author yole |
| */ |
| public abstract class JavaRunConfigurationProducerBase<T extends ModuleBasedConfiguration> extends RunConfigurationProducer<T> { |
| protected JavaRunConfigurationProducerBase(ConfigurationFactory configurationFactory) { |
| super(configurationFactory); |
| } |
| |
| protected JavaRunConfigurationProducerBase(ConfigurationType configurationType) { |
| super(configurationType); |
| } |
| |
| protected boolean setupConfigurationModule(@Nullable ConfigurationContext context, T configuration) { |
| if (context != null) { |
| final RunnerAndConfigurationSettings template = context.getRunManager().getConfigurationTemplate(getConfigurationFactory()); |
| final Module contextModule = context.getModule(); |
| final Module predefinedModule = ((ModuleBasedConfiguration)template.getConfiguration()).getConfigurationModule().getModule(); |
| if (predefinedModule != null) { |
| configuration.setModule(predefinedModule); |
| return true; |
| } |
| final Module module = findModule(configuration, contextModule); |
| if (module != null) { |
| configuration.setModule(module); |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| protected Module findModule(T configuration, Module contextModule) { |
| if (configuration.getConfigurationModule().getModule() == null && contextModule != null) { |
| return contextModule; |
| } |
| return null; |
| } |
| |
| protected TestSearchScope setupPackageConfiguration(ConfigurationContext context, |
| T configuration, |
| TestSearchScope scope) { |
| if (scope != TestSearchScope.WHOLE_PROJECT) { |
| if (!setupConfigurationModule(context, configuration)) { |
| return TestSearchScope.WHOLE_PROJECT; |
| } |
| } |
| return scope; |
| } |
| |
| @Nullable |
| @Override |
| public ConfigurationFromContext createConfigurationFromContext(ConfigurationContext context) { |
| ConfigurationFromContext fromContext = super.createConfigurationFromContext(context); |
| if (fromContext != null) { |
| JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration((RunConfigurationBase)fromContext.getConfiguration(), |
| context.getLocation()); |
| } |
| return fromContext; |
| } |
| } |