skip coverage

This commit is contained in:
anna
2009-10-01 16:59:15 +04:00
parent 925643496f
commit 4cc107a2ce
5 changed files with 86 additions and 24 deletions
@@ -25,24 +25,32 @@ package com.intellij.execution;
import com.intellij.execution.configurations.JavaParameters;
import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.configurations.RunnerSettings;
import com.intellij.execution.configurations.RuntimeConfigurationException;
import com.intellij.execution.process.OSProcessHandler;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.options.SettingsEditorGroup;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.ui.LayeredIcon;
import org.jetbrains.annotations.Nullable;
import org.jdom.Content;
import org.jdom.Element;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
public abstract class RunConfigurationExtension {
public static final ExtensionPointName<RunConfigurationExtension> EP_NAME = new ExtensionPointName<RunConfigurationExtension>("com.intellij.runConfigurationExtension");
public static final Key<List> RUN_EXTENSIONS = Key.create("run.extension.elemnts");
public abstract void handleStartProcess(final ModuleBasedConfiguration configuration, final OSProcessHandler handler);
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> SettingsEditor createEditor(T configuration);
public abstract String getEditorTitle();
public abstract String getName();
@Nullable
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> Icon getIcon(T runConfiguration);
@@ -67,15 +75,68 @@ public abstract class RunConfigurationExtension {
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings);
public abstract void readExternal(ModuleBasedConfiguration runConfiguration, Element element) throws InvalidDataException;
protected abstract void readExternal(ModuleBasedConfiguration runConfiguration, Element element) throws InvalidDataException;
public abstract void writeExternal(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException;
public static void readSettings(ModuleBasedConfiguration runConfiguration, Element parentNode) throws InvalidDataException {
List children = parentNode.getChildren("extension");
boolean found = true;
ext: for (Object o : children) {
final Element element = (Element)o;
final String extensionName = element.getAttributeValue("name");
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
if (Comparing.strEqual(extensionName, extension.getName())) {
extension.readExternal(runConfiguration, element);
continue ext;
}
}
found = false;
}
if (!found) {
runConfiguration.putCopyableUserData(RUN_EXTENSIONS, children);
}
}
public static void writeSettings(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException {
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
Element el = new Element("extension");
el.setAttribute("name", extension.getName());
extension.writeExternal(runConfiguration, el);
element.addContent(el);
}
List<Element> elements = runConfiguration.getCopyableUserData(RUN_EXTENSIONS);
if (elements != null && !elements.isEmpty()) {
final List<String> foundNames = new ArrayList<String>();
final List children = element.getChildren("extension");
for (Object o : children) {
foundNames.add(((Element)o).getAttributeValue("name"));
}
int idx = children.isEmpty() ? element.getContentSize() : element.indexOf((Content)children.get(0));
for (Element el : elements) {
final String name = el.getAttributeValue("name");
int i = foundNames.indexOf(name);
if (i == -1) {
element.addContent(idx, (Content)el.clone());
}
idx ++;
}
}
}
protected abstract void writeExternal(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException;
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> void patchConfiguration(T runJavaConfiguration);
public abstract <T extends ModuleBasedConfiguration & RunJavaConfiguration> void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException;
public static <T extends ModuleBasedConfiguration & RunJavaConfiguration> void patchCreatedConfiguration(T configuration) {
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
extension.patchConfiguration(configuration);
}
}
public static <T extends ModuleBasedConfiguration & RunJavaConfiguration> void checkConfigurationIsValid(T configuration) throws RuntimeConfigurationException {
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
extension.checkConfiguration(configuration);
}
}
}
@@ -125,6 +125,8 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
if (!PsiMethodUtil.hasMainMethod(psiClass)) {
throw new RuntimeConfigurationWarning(ExecutionBundle.message("main.method.not.found.in.class.error.message", MAIN_CLASS_NAME));
}
RunConfigurationExtension.checkConfigurationIsValid(this);
}
public void setProperty(final int property, final String value) {
@@ -199,9 +201,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
public void readExternal(final Element element) throws InvalidDataException {
PathMacroManager.getInstance(getProject()).expandPaths(element);
super.readExternal(element);
for (RunConfigurationExtension extension : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
extension.readExternal(this, element);
}
RunConfigurationExtension.readSettings(this, element);
DefaultJDOMExternalizer.readExternal(this, element);
readModule(element);
EnvironmentVariablesComponent.readExternal(element, getEnvs());
@@ -209,9 +209,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
public void writeExternal(final Element element) throws WriteExternalException {
super.writeExternal(element);
for (RunConfigurationExtension extension : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
extension.writeExternal(this, element);
}
RunConfigurationExtension.writeSettings(this, element);
DefaultJDOMExternalizer.writeExternal(this, element);
writeModule(element);
EnvironmentVariablesComponent.writeExternal(element, getEnvs());