migrate AppletConfiguration and BndRunConfiguration to BaseState — part 2, fix tests

This commit is contained in:
Vladimir Krivosheev
2017-12-06 13:40:45 +01:00
parent 7579a73ec5
commit 413937eb2d
4 changed files with 30 additions and 30 deletions
@@ -46,17 +46,16 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
super(new JavaRunConfigurationModule(project, false), factory);
}
@NotNull
@Override
protected AppletConfigurationOptions createOptions() {
return new AppletConfigurationOptions();
}
@Override
protected AppletConfigurationOptions getOptions() {
return (AppletConfigurationOptions)super.getOptions();
}
@Override
protected Class<AppletConfigurationOptions> getOptionsClass() {
return AppletConfigurationOptions.class;
}
@Override
public void setMainClass(final PsiClass psiClass) {
final Module originalModule = getConfigurationModule().getModule();
@@ -18,19 +18,13 @@ public abstract class LocatableConfigurationBase extends RunConfigurationBase im
super(project, factory, name);
}
@NotNull
@Override
protected RunConfigurationOptions createOptions() {
return new LocatableRunConfigurationOptions();
}
@Override
protected LocatableRunConfigurationOptions getOptions() {
return (LocatableRunConfigurationOptions)super.getOptions();
}
@Override
Class<? extends LocatableRunConfigurationOptions> getOptionsClass() {
protected Class<? extends LocatableRunConfigurationOptions> getOptionsClass() {
return LocatableRunConfigurationOptions.class;
}
@@ -33,12 +33,6 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
options.resetModificationCount();
}
@NotNull
@Override
protected ModuleBasedConfigurationOptions<ConfigurationModule> createOptions() {
return new ModuleBasedConfigurationOptions<>();
}
@Override
protected ModuleBasedConfigurationOptions<ConfigurationModule> getOptions() {
//noinspection unchecked
@@ -46,7 +40,7 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
}
@Override
Class<ModuleBasedConfigurationOptions> getOptionsClass() {
protected Class<? extends ModuleBasedConfigurationOptions> getOptionsClass() {
return ModuleBasedConfigurationOptions.class;
}
@@ -98,6 +92,18 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
return configuration;
}
@Override
public void readExternal(Element element) throws InvalidDataException {
ConfigurationModule module = getConfigurationModule();
super.readExternal(element);
// if null after read, it means that no such field at all in the data, but our clients expect that will be some not null ConfigurationModule wrapper
if (getConfigurationModule() == null) {
module.setModule(null);
getOptions().setModule(module);
}
}
@SuppressWarnings("MethodDoesntCallSuperMethod")
@Override
public ModuleBasedConfiguration clone() {
@@ -14,6 +14,7 @@ import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizerUtil;
import com.intellij.openapi.util.UserDataHolderBase;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.ReflectionUtil;
import com.intellij.util.SmartList;
import com.intellij.util.xmlb.annotations.Attribute;
import com.intellij.util.xmlb.annotations.Transient;
@@ -55,8 +56,8 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements
}
@NotNull
protected RunConfigurationOptions createOptions() {
return new RunConfigurationOptions();
private RunConfigurationOptions createOptions() {
return ReflectionUtil.newInstance(getOptionsClass());
}
protected RunConfigurationOptions getOptions() {
@@ -128,6 +129,8 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements
final RunConfigurationBase runConfiguration = (RunConfigurationBase)super.clone();
runConfiguration.myLogFiles = new ArrayList<>(myLogFiles);
runConfiguration.myPredefinedLogFiles = new ArrayList<>(myPredefinedLogFiles);
runConfiguration.myOptions = createOptions();
runConfiguration.myOptions.copyFrom(myOptions);
copyCopyableDataTo(runConfiguration);
@@ -206,16 +209,14 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements
myPredefinedLogFiles.add(logFile);
}
if (this instanceof PersistentStateComponent) {
PersistentStateComponent instance = (PersistentStateComponent)this;
myOptions = XmlSerializer.deserialize(element, ComponentSerializationUtil.getStateClass(instance.getClass()));
}
else {
myOptions = XmlSerializer.deserialize(element, getOptionsClass());
}
myOptions = XmlSerializer.deserialize(element, getOptionsClass());
}
Class<? extends RunConfigurationOptions> getOptionsClass() {
protected Class<? extends RunConfigurationOptions> getOptionsClass() {
if (this instanceof PersistentStateComponent) {
PersistentStateComponent instance = (PersistentStateComponent)this;
return ComponentSerializationUtil.getStateClass(instance.getClass());
}
return RunConfigurationOptions.class;
}