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());
@@ -27,7 +27,6 @@ import com.intellij.execution.testframework.TestSearchScope;
import com.intellij.execution.util.JavaParametersUtil;
import com.intellij.openapi.components.PathMacroManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.options.SettingsEditor;
@@ -98,6 +97,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
public void checkConfiguration() throws RuntimeConfigurationException {
myData.getTestObject(getProject(), this).checkConfiguration();
RunConfigurationExtension.checkConfigurationIsValid(this);
}
public Collection<Module> getValidModules() {
@@ -211,9 +211,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
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);
readModule(element);
DefaultJDOMExternalizer.readExternal(this, element);
DefaultJDOMExternalizer.readExternal(getPersistentData(), element);
@@ -222,9 +220,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
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);
writeModule(element);
DefaultJDOMExternalizer.writeExternal(this, element);
DefaultJDOMExternalizer.writeExternal(getPersistentData(), element);
@@ -21,7 +21,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.refactoring.listeners.RefactoringElementListener;
@@ -32,10 +31,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.testng.xml.Parser;
import java.io.FileInputStream;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.io.FileInputStream;
public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigurationModule> implements RunJavaConfiguration, RefactoringListenerProvider {
//private TestNGResultsContainer resultsContainer;
@@ -260,6 +259,7 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
throw new RuntimeConfigurationException("Unable to parse '" + data.getSuiteName() + "' specified");
}
}
RunConfigurationExtension.checkConfigurationIsValid(this);
//TODO add various checks here
}
@@ -267,9 +267,7 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
public void readExternal(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);
readModule(element);
DefaultJDOMExternalizer.readExternal(this, element);
DefaultJDOMExternalizer.readExternal(getPersistantData(), element);
@@ -299,9 +297,7 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
@Override
public void writeExternal(Element element) throws WriteExternalException {
super.writeExternal(element);
for (RunConfigurationExtension extension : Extensions.getExtensions(RunConfigurationExtension.EP_NAME)) {
extension.writeExternal(this, element);
}
RunConfigurationExtension.writeSettings(this, element);
writeModule(element);
DefaultJDOMExternalizer.writeExternal(this, element);
DefaultJDOMExternalizer.writeExternal(getPersistantData(), element);
@@ -112,6 +112,11 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public String getName() {
return "snapshooter";
}
@Override
public <T extends ModuleBasedConfiguration & RunJavaConfiguration> Icon getIcon(T runConfiguration) {
return null; //To change body of implemented methods use File | Settings | File Templates.
@@ -130,4 +135,10 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
@Override
public <T extends ModuleBasedConfiguration & RunJavaConfiguration> void patchConfiguration(T runJavaConfiguration) {
}
@Override
public <T extends ModuleBasedConfiguration & RunJavaConfiguration> void checkConfiguration(T runJavaConfiguration)
throws RuntimeConfigurationException {
}
}