migrate ApplicationConfiguration to BaseState — sync old fields

This commit is contained in:
Vladimir Krivosheev
2017-12-19 12:26:22 +01:00
parent 1827041ff8
commit 739364e1c4
13 changed files with 68 additions and 49 deletions
@@ -7,7 +7,7 @@ import com.intellij.execution.configurations.ConfigurationWithAlternativeJre;
import org.jetbrains.annotations.Nullable;
public interface CommonJavaRunConfigurationParameters extends CommonProgramRunConfigurationParameters, ConfigurationWithAlternativeJre {
void setVMParameters(String value);
void setVMParameters(@Nullable String value);
String getVMParameters();
@@ -79,7 +79,7 @@ public abstract class AbstractApplicationConfigurationProducer<T extends Applica
public boolean isConfigurationFromContext(T appConfiguration, ConfigurationContext context) {
final PsiElement location = context.getPsiLocation();
final PsiClass aClass = ApplicationConfigurationType.getMainClass(location);
if (aClass != null && Comparing.equal(JavaExecutionUtil.getRuntimeQualifiedName(aClass), appConfiguration.getOptions().getMainClassName())) {
if (aClass != null && Comparing.equal(JavaExecutionUtil.getRuntimeQualifiedName(aClass), appConfiguration.getMainClassName())) {
final PsiMethod method = PsiTreeUtil.getParentOfType(location, PsiMethod.class, false);
if (method != null && TestFrameworks.getInstance().isTestMethod(method)) {
return false;
@@ -71,7 +71,7 @@ public class ApplicationConfigurable extends SettingsEditor<ApplicationConfigura
configuration.setMainClassName(aClass != null ? JavaExecutionUtil.getRuntimeQualifiedName(aClass) : className);
configuration.setAlternativeJrePath(myJrePathEditor.getJrePathOrName());
configuration.setAlternativeJrePathEnabled(myJrePathEditor.isAlternativeJreSelected());
configuration.getOptions().setSwingInspectorEnabled((myVersionDetector.isJre50Configured(configuration) || myVersionDetector.isModuleJre50Configured(configuration)) && myShowSwingInspectorCheckbox.isSelected());
configuration.setSwingInspectorEnabled((myVersionDetector.isJre50Configured(configuration) || myVersionDetector.isModuleJre50Configured(configuration)) && myShowSwingInspectorCheckbox.isSelected());
configuration.setShortenCommandLine((ShortenCommandLine)myShortenClasspathModeCombo.getComponent().getSelectedItem());
configuration.setIncludeProvidedScope(myIncludeProvidedDeps.getComponent().isSelected());
@@ -82,9 +82,8 @@ public class ApplicationConfigurable extends SettingsEditor<ApplicationConfigura
myCommonProgramParameters.reset(configuration);
myModuleSelector.reset(configuration);
ApplicationConfigurationOptions options = configuration.getOptions();
getMainClassField().setText(options.getMainClassName() != null ? options.getMainClassName().replaceAll("\\$", "\\.") : "");
myJrePathEditor.setPathOrName(options.getAlternativeJrePath(), options.isAlternativeJrePathEnabled());
getMainClassField().setText(configuration.getMainClassName() != null ? configuration.getMainClassName().replaceAll("\\$", "\\.") : "");
myJrePathEditor.setPathOrName(configuration.getAlternativeJrePath(), configuration.isAlternativeJrePathEnabled());
myShortenClasspathModeCombo.getComponent().setSelectedItem(configuration.getShortenCommandLine());
myIncludeProvidedDeps.getComponent().setSelected(configuration.isProvidedScopeIncluded());
@@ -94,7 +93,7 @@ public class ApplicationConfigurable extends SettingsEditor<ApplicationConfigura
private void updateShowSwingInspector(final ApplicationConfiguration configuration) {
if (myVersionDetector.isJre50Configured(configuration) || myVersionDetector.isModuleJre50Configured(configuration)) {
myShowSwingInspectorCheckbox.setEnabled(true);
myShowSwingInspectorCheckbox.setSelected(configuration.getOptions().isSwingInspectorEnabled());
myShowSwingInspectorCheckbox.setSelected(configuration.isSwingInspectorEnabled());
myShowSwingInspectorCheckbox.setText(ExecutionBundle.message("show.swing.inspector"));
}
else {
@@ -62,8 +62,11 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
super(name, new JavaRunConfigurationModule(project, true), factory);
}
/**
* Because we have to keep backward compatibility, never use `getOptions()` to get or set values - use only designated getters/setters.
*/
@Override
public ApplicationConfigurationOptions getOptions() {
protected ApplicationConfigurationOptions getOptions() {
return (ApplicationConfigurationOptions)super.getOptions();
}
@@ -73,7 +76,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
}
@Override
public void setMainClass(final PsiClass psiClass) {
public void setMainClass(@NotNull PsiClass psiClass) {
final Module originalModule = getConfigurationModule().getModule();
setMainClassName(JavaExecutionUtil.getRuntimeQualifiedName(psiClass));
setModule(JavaExecutionUtil.findModule(psiClass));
@@ -113,7 +116,8 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
@Nullable
public String getMainClassName() {
return getOptions().getMainClassName();
//noinspection deprecation
return MAIN_CLASS_NAME;
}
@Override
@@ -130,30 +134,30 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
if (getMainClassName() == null) {
return null;
}
return ProgramRunnerUtil.shortenName(JavaExecutionUtil.getShortClassName(getOptions().getMainClassName()), 6) + ".main()";
return ProgramRunnerUtil.shortenName(JavaExecutionUtil.getShortClassName(getMainClassName()), 6) + ".main()";
}
@Override
public void setMainClassName(@Nullable String qualifiedName) {
getOptions().setMainClassName(qualifiedName);
//noinspection deprecation
MAIN_CLASS_NAME = qualifiedName;
getOptions().setMainClassName(qualifiedName);
}
@Override
public void checkConfiguration() throws RuntimeConfigurationException {
JavaParametersUtil.checkAlternativeJRE(this);
final JavaRunConfigurationModule configurationModule = getConfigurationModule();
final PsiClass psiClass = configurationModule.checkModuleAndClassName(getOptions().getMainClassName(), ExecutionBundle.message("no.main.class.specified.error.text"));
final PsiClass psiClass = configurationModule.checkModuleAndClassName(getMainClassName(), ExecutionBundle.message("no.main.class.specified.error.text"));
if (!PsiMethodUtil.hasMainMethod(psiClass)) {
throw new RuntimeConfigurationWarning(ExecutionBundle.message("main.method.not.found.in.class.error.message", getOptions().getMainClassName()));
throw new RuntimeConfigurationWarning(ExecutionBundle.message("main.method.not.found.in.class.error.message", getMainClassName()));
}
ProgramParametersUtil.checkWorkingDirectoryExist(this, getProject(), configurationModule.getModule());
JavaRunConfigurationExtensionManager.checkConfigurationIsValid(this);
}
@Override
public void setVMParameters(String value) {
public void setVMParameters(@Nullable String value) {
getOptions().setVmParameters(value);
}
@@ -163,23 +167,30 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
}
@Override
public void setProgramParameters(String value) {
public void setProgramParameters(@Nullable String value) {
//noinspection deprecation
PROGRAM_PARAMETERS = value;
getOptions().setProgramParameters(value);
}
@Override
public String getProgramParameters() {
return getOptions().getProgramParameters();
//noinspection deprecation
return PROGRAM_PARAMETERS;
}
@Override
public void setWorkingDirectory(String value) {
getOptions().setWorkingDirectory(ExternalizablePath.urlValue(value));
public void setWorkingDirectory(@Nullable String value) {
String normalizedValue = ExternalizablePath.urlValue(value);
//noinspection deprecation
WORKING_DIRECTORY = normalizedValue;
getOptions().setWorkingDirectory(normalizedValue);
}
@Override
public String getWorkingDirectory() {
return ExternalizablePath.localPathValue(getOptions().getWorkingDirectory());
//noinspection deprecation
return ExternalizablePath.localPathValue(WORKING_DIRECTORY);
}
@Override
@@ -207,7 +218,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
@Override
@Nullable
public String getRunClass() {
return getOptions().getMainClassName();
return getMainClassName();
}
@Override
@@ -218,7 +229,8 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
@Override
public boolean isAlternativeJrePathEnabled() {
return getOptions().isAlternativeJrePathEnabled();
//noinspection deprecation
return ALTERNATIVE_JRE_PATH_ENABLED;
}
@Override
@@ -231,7 +243,8 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
@Nullable
@Override
public String getAlternativeJrePath() {
return getOptions().getAlternativeJrePath();
//noinspection deprecation
return ALTERNATIVE_JRE_PATH;
}
@Override
@@ -251,7 +264,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
@Override
public Collection<Module> getValidModules() {
return JavaRunConfigurationModule.getModulesForClass(getProject(), getOptions().getMainClassName());
return JavaRunConfigurationModule.getModulesForClass(getProject(), getMainClassName());
}
@SuppressWarnings("deprecation")
@@ -259,9 +272,6 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
public void readExternal(@NotNull final Element element) {
super.readExternal(element);
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
setShortenCommandLine(ShortenCommandLine.readShortenClasspathMethod(element));
ApplicationConfigurationOptions options = getOptions();
MAIN_CLASS_NAME = options.getMainClassName();
PROGRAM_PARAMETERS = options.getProgramParameters();
@@ -269,6 +279,9 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
ALTERNATIVE_JRE_PATH = options.getAlternativeJrePath();
ALTERNATIVE_JRE_PATH_ENABLED = options.isAlternativeJrePathEnabled();
ENABLE_SWING_INSPECTOR = options.isSwingInspectorEnabled();
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
setShortenCommandLine(ShortenCommandLine.readShortenClasspathMethod(element));
}
@Override
@@ -290,6 +303,17 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
myShortenCommandLine = mode;
}
public boolean isSwingInspectorEnabled() {
//noinspection deprecation
return ENABLE_SWING_INSPECTOR;
}
public void setSwingInspectorEnabled(boolean value) {
//noinspection deprecation
ENABLE_SWING_INSPECTOR = value;
getOptions().setSwingInspectorEnabled(value);
}
public static class JavaApplicationCommandLineState<T extends ApplicationConfiguration> extends BaseJavaApplicationCommandLineState<T> {
public JavaApplicationCommandLineState(@NotNull final T configuration, final ExecutionEnvironment environment) {
super(environment, configuration);
@@ -302,11 +326,10 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
params.setShortenCommandLine(configuration.getShortenCommandLine(), configuration.getProject());
final JavaRunConfigurationModule module = myConfiguration.getConfigurationModule();
ApplicationConfigurationOptions options = myConfiguration.getOptions();
final String jreHome = options.isAlternativeJrePathEnabled() ? options.getAlternativeJrePath() : null;
final String jreHome = myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null;
if (module.getModule() != null) {
DumbService.getInstance(module.getProject()).runWithAlternativeResolveEnabled(() -> {
int classPathType = JavaParametersUtil.getClasspathType(module, options.getMainClassName(), false, myConfiguration.isProvidedScopeIncluded());
int classPathType = JavaParametersUtil.getClasspathType(module, myConfiguration.getMainClassName(), false, myConfiguration.isProvidedScopeIncluded());
JavaParametersUtil.configureModule(module, params, classPathType, jreHome);
});
}
@@ -314,7 +337,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
JavaParametersUtil.configureProject(module.getProject(), params, JavaParameters.JDK_AND_CLASSES_AND_TESTS, jreHome);
}
params.setMainClass(options.getMainClassName());
params.setMainClass(myConfiguration.getMainClassName());
setupJavaParameters(params);
@@ -10,10 +10,10 @@ import java.util.*
open class ApplicationConfigurationOptions : JvmConfigurationOptions() {
@get:OptionTag("PROGRAM_PARAMETERS")
var programParameters by string()
open var programParameters by string()
@get:OptionTag("WORKING_DIRECTORY")
var workingDirectory by string()
open var workingDirectory by string()
@get:OptionTag("INCLUDE_PROVIDED_SCOPE")
var includeProvidedScope by property(false)
@@ -128,7 +128,7 @@ public class JarApplicationConfiguration extends LocatableConfigurationBase impl
}
@Override
public void setVMParameters(String value) {
public void setVMParameters(@Nullable String value) {
myBean.VM_PARAMETERS = value;
}
@@ -4,7 +4,6 @@
package com.intellij.execution.scratch;
import com.intellij.application.options.ModulesComboBox;
import com.intellij.execution.application.ApplicationConfigurationOptions;
import com.intellij.execution.ui.CommonJavaParametersPanel;
import com.intellij.execution.ui.ConfigurationModuleSelector;
import com.intellij.execution.ui.DefaultJreSelector;
@@ -125,9 +124,8 @@ public class JavaScratchConfigurable extends SettingsEditor<JavaScratchConfigura
myCommonProgramParameters.reset(configuration);
myModuleSelector.reset(configuration);
ApplicationConfigurationOptions options = configuration.getOptions();
myMainClass.getComponent().setText(options.getMainClassName() != null ? options.getMainClassName().replaceAll("\\$", "\\.") : "");
myJrePathEditor.setPathOrName(options.getAlternativeJrePath(), options.isAlternativeJrePathEnabled());
myMainClass.getComponent().setText(configuration.getMainClassName() != null ? configuration.getMainClassName().replaceAll("\\$", "\\.") : "");
myJrePathEditor.setPathOrName(configuration.getAlternativeJrePath(), configuration.isAlternativeJrePathEnabled());
setVFileToEditor(configuration.getScratchVirtualFile());
}
@@ -55,7 +55,7 @@ public abstract class MvcRunConfiguration extends ModuleBasedConfiguration<RunCo
}
@Override
public void setVMParameters(String vmParams) {
public void setVMParameters(@Nullable String vmParams) {
this.vmParams = vmParams;
}
@@ -315,7 +315,7 @@ public class GroovyScriptRunConfiguration extends ModuleBasedConfiguration<RunCo
}
@Override
public void setVMParameters(String value) {
public void setVMParameters(@Nullable String value) {
vmParams = value;
}
@@ -38,6 +38,7 @@ import com.intellij.util.ArrayUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@@ -211,7 +212,7 @@ public class JUnitConfiguration extends JavaTestConfigurationBase {
}
@Override
public void setVMParameters(String value) {
public void setVMParameters(@Nullable String value) {
myData.setVMParameters(value);
}
@@ -134,7 +134,7 @@ public class TestNGConfiguration extends JavaTestConfigurationBase {
return testObject != null ? testObject.getActionName() : null;
}
public void setVMParameters(String value) {
public void setVMParameters(@Nullable String value) {
data.setVMParameters(value);
}
@@ -110,7 +110,7 @@ public class CreateSnapShotAction extends AnAction {
if (config.getConfiguration() instanceof ApplicationConfiguration) {
ApplicationConfiguration appConfig = (ApplicationConfiguration) config.getConfiguration();
appConfigurations.add(config);
if (appConfig.getOptions().isSwingInspectorEnabled()) {
if (appConfig.isSwingInspectorEnabled()) {
SnapShooterConfigurationSettings settings = SnapShooterConfigurationSettings.get(appConfig);
snapshotConfiguration = config;
if (settings.getLastPort() > 0) {
@@ -280,7 +280,7 @@ public class CreateSnapShotAction extends AnAction {
if (rc < 0) return null;
snapshotConfiguration = configurations.get(rc);
}
((ApplicationConfiguration) snapshotConfiguration.getConfiguration()).getOptions().setSwingInspectorEnabled(true);
((ApplicationConfiguration)snapshotConfiguration.getConfiguration()).setSwingInspectorEnabled(true);
return snapshotConfiguration;
}
@@ -7,7 +7,6 @@ package com.intellij.uiDesigner.snapShooter;
import com.intellij.designer.DesignerEditorPanelFacade;
import com.intellij.execution.RunConfigurationExtension;
import com.intellij.execution.application.ApplicationConfiguration;
import com.intellij.execution.application.ApplicationConfigurationOptions;
import com.intellij.execution.configurations.JavaParameters;
import com.intellij.execution.configurations.RunConfigurationBase;
import com.intellij.execution.configurations.RunnerSettings;
@@ -42,20 +41,19 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
if (!isApplicableFor(configuration)) {
return;
}
ApplicationConfiguration appConfiguration = (ApplicationConfiguration) configuration;
ApplicationConfiguration appConfiguration = (ApplicationConfiguration)configuration;
SnapShooterConfigurationSettings settings = appConfiguration.getUserData(SnapShooterConfigurationSettings.SNAP_SHOOTER_KEY);
if (settings == null) {
settings = new SnapShooterConfigurationSettings();
appConfiguration.putUserData(SnapShooterConfigurationSettings.SNAP_SHOOTER_KEY, settings);
}
ApplicationConfigurationOptions options = appConfiguration.getOptions();
boolean swingInspectorEnabled = options.isSwingInspectorEnabled();
boolean swingInspectorEnabled = appConfiguration.isSwingInspectorEnabled();
if (swingInspectorEnabled) {
settings.setLastPort(NetUtils.tryToFindAvailableSocketPort());
}
if (swingInspectorEnabled && settings.getLastPort() != -1) {
params.getProgramParametersList().prepend(options.getMainClassName());
params.getProgramParametersList().prepend(appConfiguration.getMainClassName());
params.getProgramParametersList().prepend(Integer.toString(settings.getLastPort()));
// add +1 because idea_rt.jar will be added as the last entry to the classpath
params.getProgramParametersList().prepend(Integer.toString(params.getClassPath().getPathList().size() + 1));