JetRunConfiguration should store its settings in the same format as Java's ApplicationConfiguration to be able to reuse code in JPS #KT-2041 Fixed

This commit is contained in:
Maxim Manuylov
2012-05-20 01:54:00 +02:00
parent f9515e1619
commit 8793dee390
3 changed files with 30 additions and 24 deletions
@@ -26,8 +26,7 @@ import com.intellij.openapi.components.PathMacroManager;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.*;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.xmlb.XmlSerializer; import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element; import org.jdom.Element;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -43,7 +42,10 @@ import java.util.Map;
public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurationModule> public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurationModule>
implements CommonJavaRunConfigurationParameters { implements CommonJavaRunConfigurationParameters {
private JetRunConfigurationSettings settings = new JetRunConfigurationSettings(); public String MAIN_CLASS_NAME;
public String VM_PARAMETERS;
public String PROGRAM_PARAMETERS;
public String WORKING_DIRECTORY;
public boolean ALTERNATIVE_JRE_PATH_ENABLED; public boolean ALTERNATIVE_JRE_PATH_ENABLED;
public String ALTERNATIVE_JRE_PATH; public String ALTERNATIVE_JRE_PATH;
@@ -76,14 +78,20 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
super.readExternal(element); super.readExternal(element);
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element); JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
DefaultJDOMExternalizer.readExternal(this, element);
readModule(element); readModule(element);
EnvironmentVariablesComponent.readExternal(element, getEnvs()); EnvironmentVariablesComponent.readExternal(element, getEnvs());
//TODO remove the following code (left for backward compatibility)
Element settingsElement = element.getChild(JetRunConfigurationSettings.class.getSimpleName()); Element settingsElement = element.getChild(JetRunConfigurationSettings.class.getSimpleName());
if (settingsElement != null) { if (settingsElement != null) {
JetRunConfigurationSettings readSettings = XmlSerializer.deserialize(settingsElement, JetRunConfigurationSettings.class); JetRunConfigurationSettings settings = XmlSerializer.deserialize(settingsElement, JetRunConfigurationSettings.class);
if (readSettings != null) { if (settings != null) {
settings = readSettings; MAIN_CLASS_NAME = settings.getMainClassName();
VM_PARAMETERS = settings.getVmParameters();
PROGRAM_PARAMETERS = settings.getProgramParameters();
WORKING_DIRECTORY = settings.getWorkingDirectory();
} }
} }
} }
@@ -92,42 +100,41 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
public void writeExternal(final Element element) throws WriteExternalException { public void writeExternal(final Element element) throws WriteExternalException {
super.writeExternal(element); super.writeExternal(element);
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element); JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
DefaultJDOMExternalizer.writeExternal(this, element);
writeModule(element); writeModule(element);
EnvironmentVariablesComponent.writeExternal(element, getEnvs()); EnvironmentVariablesComponent.writeExternal(element, getEnvs());
PathMacroManager.getInstance(getProject()).collapsePathsRecursively(element); PathMacroManager.getInstance(getProject()).collapsePathsRecursively(element);
element.addContent(XmlSerializer.serialize(settings()));
} }
@Override @Override
public void setVMParameters(String value) { public void setVMParameters(String value) {
settings().setVmParameters(value); VM_PARAMETERS = value;
} }
@Override @Override
public String getVMParameters() { public String getVMParameters() {
return settings().getVmParameters(); return VM_PARAMETERS;
} }
@Override @Override
public void setProgramParameters(String value) { public void setProgramParameters(String value) {
settings().setProgramParameters(value); PROGRAM_PARAMETERS = value;
} }
@Override @Override
public String getProgramParameters() { public String getProgramParameters() {
return settings().getProgramParameters(); return PROGRAM_PARAMETERS;
} }
@Override @Override
public void setWorkingDirectory(String value) { public void setWorkingDirectory(String value) {
settings().setWorkingDirectory(ExternalizablePath.urlValue(value)); WORKING_DIRECTORY = ExternalizablePath.urlValue(value);
} }
@Override @Override
public String getWorkingDirectory() { public String getWorkingDirectory() {
return ExternalizablePath.localPathValue(settings().getWorkingDirectory()); return ExternalizablePath.localPathValue(WORKING_DIRECTORY);
} }
@Override @Override
@@ -153,11 +160,11 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
@Override @Override
public String getRunClass() { public String getRunClass() {
return settings().getMainClassName(); return MAIN_CLASS_NAME;
} }
public void setRunClass(String value) { public void setRunClass(String value) {
settings().setMainClassName(value); MAIN_CLASS_NAME = value;
} }
@Override @Override
@@ -185,11 +192,6 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
ALTERNATIVE_JRE_PATH = path; ALTERNATIVE_JRE_PATH = path;
} }
@NotNull
public JetRunConfigurationSettings settings() {
return settings;
}
@Override @Override
public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment)
throws ExecutionException { throws ExecutionException {
@@ -215,7 +217,7 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
final int classPathType = JavaParametersUtil.getClasspathType( final int classPathType = JavaParametersUtil.getClasspathType(
module, module,
myConfiguration.settings().getMainClassName(), myConfiguration.getRunClass(),
false); false);
final String jreHome = myConfiguration.ALTERNATIVE_JRE_PATH_ENABLED ? myConfiguration.ALTERNATIVE_JRE_PATH final String jreHome = myConfiguration.ALTERNATIVE_JRE_PATH_ENABLED ? myConfiguration.ALTERNATIVE_JRE_PATH
@@ -223,7 +225,7 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
JavaParametersUtil.configureModule(module, params, classPathType, jreHome); JavaParametersUtil.configureModule(module, params, classPathType, jreHome);
JavaParametersUtil.configureConfiguration(params, myConfiguration); JavaParametersUtil.configureConfiguration(params, myConfiguration);
params.setMainClass(myConfiguration.settings().getMainClassName()); params.setMainClass(myConfiguration.getRunClass());
return params; return params;
} }
@@ -109,7 +109,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) { for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) {
if (existingConfiguration.getType() instanceof JetRunConfigurationType) { if (existingConfiguration.getType() instanceof JetRunConfigurationType) {
JetRunConfiguration jetConfiguration = (JetRunConfiguration)existingConfiguration.getConfiguration(); JetRunConfiguration jetConfiguration = (JetRunConfiguration)existingConfiguration.getConfiguration();
if (Comparing.equal(jetConfiguration.settings().getMainClassName(), startClassFQName.getFqName())) { if (Comparing.equal(jetConfiguration.getRunClass(), startClassFQName.getFqName())) {
if (Comparing.equal(location.getModule(), jetConfiguration.getConfigurationModule().getModule())) { if (Comparing.equal(location.getModule(), jetConfiguration.getConfigurationModule().getModule())) {
return existingConfiguration; return existingConfiguration;
} }
@@ -21,8 +21,12 @@ import org.jetbrains.annotations.Nullable;
/** /**
* Should be serializable. * Should be serializable.
* *
* @deprecated this class was left just for backward compatibility
* @author Nikolay Krasko * @author Nikolay Krasko
*
* TODO remove this class
*/ */
@Deprecated
public class JetRunConfigurationSettings { public class JetRunConfigurationSettings {
public static String DEFAULT_MAIN_CLASS_NAME = ""; public static String DEFAULT_MAIN_CLASS_NAME = "";
public static String DEFAULT_VM_PARAMETERS = ""; public static String DEFAULT_VM_PARAMETERS = "";