mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
skip coverage
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-6
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user